<TIL> 81. Infra

YUJIN LEE·2023년 4월 4일
0

개발log

목록 보기
75/149

Infra

서비스 및 플랫폼을 개발하기 위해 필요한 모든 자원을 관리하는 기반.
서비스를 운영하기 위한 IT 리소스(서버, DB, 네트워크, 스토리지 등) 구축, 운영하기 위한 모든 개념 통칭.
즉, 데이터를 주고받기 위한 물리적 장비.

애플리케이션을 가동시키기 위해 필요한 하드웨어나 OS, 미들웨어, 네트워크 등 시스템 기반.
시스템의 성능, 안정성, 확장성, 보안같은 비기능적인 요구사항(non-functional requirement)와 관련

On-premise 방식

데이터 센터 및 전산실에 장비가 위치, 서비스 운영하는 구조
직접 관리할 수 있고, 기밀성이 높은 장점.
단점 : 고가의 장비, 사용량 예측 불가능

클라우드 방식

클라우드 프로바이더가 데이터 센터와 인프라를 보유하고 사용자에게 제공하는 형태
외부업체(아마존 AWS, Microsoft Azure)의 자원을 빌려다 쓰는 것
트래픽 변동이 많을 수 있거나 많을 경우 유리.

  • Public Cloud: 인터넷을 통해 불특정 다수에게 제공되는 시스템
    -> AWS, GCP, Azure
  • Private Cloud: 퍼블릭 클라우드에서 이용자를 한정한 형태.
    보안이 좋고 독자적인 서비스 추가 쉬움
  • Hybrid Cloud: 온프레미스와 클라우드 함께 사용 형태

인프라 구성요소

Hardware(HW)

서버 장비 본체나, 데이터를 저장하기 위한 스토리지, 전원 장치

인프라에서 가장 low-level을 맡고 있는 것. 하드웨어/네트워크
온프레미스 시스템은 여러대의 서버 장비로 구성.
클라우드에서는 인스턴스 하드웨어 성능에 따라 선택 가능.'

Network

사용자가 원격으로 접근 할 수 있도록 서버 연결하는 도구들
라우터, 스위치, 방화벽 등 네트워크 장비...
엑세스 포인트(Access Point, AP)

CPU(Central Processing Unit, 중앙처리장치)

CPU 성능은 코어와 캐시 영향.
코어가 많을수록 동시 처리 연산 늘어나고
캐시의 크기가 클수록 메모리와 처리 속도의 성능이 좋아짐

CPU - 직렬 처리에 최적화된 몇개의 코어로 구성
GPU(Graphics Processing Unit) - 병렬처리에 최적화된 작고 많은 코어로 구성

Memory

주 기억장치. 데이터 용량이 크거나 전송 속도가 고속일수록 고성능.
서버용으로는 전력소모 적고, 오류처리 탑재된 것 선정

Data storagy

데이터를 저장하는 디바이스.
보통 스토리지의 속도가 제일 느림 -> 스토리지 용량이나 읽기, 쓰기 속도가 시스템 전체 속도에 영향

하드디스크, SSD로 이루어짐

데이터가 손실되면 안되기 때문에 대부분 고가용성(High Availablility HA, 오랜 기간 지속적으로 운영되는 것)을 위해 이중화(redundancy) or 다중화 구성.

이중화?
같은 장비 or 시스템이 장애가 나는 것을 대비해 같은 모듈을 2개(또는 그 이상) 준비.

기타 하드웨어

무정전 전원공급장치(Uninterruptible Power Supply, UPS) - 전원 차단 방지
KVM 스위치 - 여러 대의 서버 관리
서버 랙 - 서버 장비 설치에 이용

방화벽

보안을 위해 내부 네트워크와 외부 네트워크의 통신 제어, 불필요한 통신 차단

  • 패킷 필터형: 포트 번호나 IP 주소 바탕으로 필터링
  • 애플리케이션 게이트웨이형: 애플리케이션 프로토콜 레벨에서 외부와의 통신을 제어하는 방식,
    일반적으로 프록시 서버라고 부름.
    세션에 포함된 정보 검사.
    패킷 필터형에 비해 속도 느림 but, 많은 검사 수행 가능

Network - 사용자가 원격으로 접근할 수 있도록 서버를 연결하는 도구들
Operating System, OS - 하드웨어와 네트워크 장비를 제어하기 위한 기본적인 소프트웨어
Client OS(Window, macOS...)
Server OS(Linux, Unix, Windows, Server 등)
Middleware - 서버 상에서 서버가 특정 역할을 하도록 기능을 제공하는 소프트웨어

Network

Net + Work
컴퓨터들이 통신 기술을 이용해 그물망처럼 연결된 통신 이용 형태 의미.
두 대 이상의 컴퓨터와 같은 장치의 노드(node)들이 서로 패킷을 교환하며 통신하는 것

네트워크 종류

PAN(Personal Area Network)
LAN(Local Area Network)
MAN(Metroplitan Area Network)
WAN(Wide Area Network)

MAC 주소(물리 주소 / 이더넷 주소)

물리적으로 할당되는 48bit 주소.
앞 24bit는 네트워크 부품의 제조업체를 식별, 뒤 24bit - 각 제조업체가 중복되지 않도록 할당

IP 주소

인터넷이나 인트라넷 같은 네트워크에 연결된 장비 할당 번호
IPv4

  • 8bit씩 4개로 구분된 32bit
  • 각 자리 0~255 표현 가능
  • 사내 네트워크에서는 사설 ip 사용, 인터넷으로 나가는 경계에서는 공인 IP사용하는 NAT장비 사용

IPv6

  • 128bit IP주소 사용

OSI모델(Open System Interconnection Model)

통신을 할 때 서로 어떻게 메시지를 주고 받고 어떤 언어를 사용할지 규칙이 필요.
이런 규약을 통신 프로토콜이라고 함.
OSI 모델은 국제 표준화 기구(International Organization for Standardization, IOS)에서 만든 컴퓨터의 통신 기능을 계층 구조로 나눈 모델.
이를 이용시 특정 네트워크 시스템에서 일어나는 일을 계층으로 활용해 시각적으로 이해 가능.
총 7계층. 데이터가 네트워크로 나갈때는 위층. 네트워크에서 데이터를 받을때는 아래층.

  1. 물리계층(Phisical Layer)
  2. 데이터 링크 계층(Data Link Layer)
  3. 네트워크 계층(Network Layer)
  4. 전송 계층(Transport Layer)
  5. 세션 계층(Session Layer)
  6. 프레젠테이션 계층(Presentation Layer)
  7. 응용 계층(Application Layer)

Middleware

OS와 비즈니스를 처리하는 애플리케이션 사이에 들어가는 각종 소프트웨어 말함.
웹 서버, DBMS, 시스템 모니터링 툴 등 있다.

Web Server

클라이언트가 보낸 HTTP 요청을 받아 웹 콘텐츠를 응답으로 반환, 서버쪽 애플리케이션 호출

  • Apache HTTP Server - 폭 넓게 사용되는 전통 오픈소스 웹 서버
  • Internet Infomation Services - Microsoft에서 제공하는 웹 서버.
    Windows Server 시리즈와 같은 OS제품에 들어감
  • Nginx - 소비 메모리가 적으며 리버스 프록시와 로드밸런서 기능을 갖추고 있는 오픈 소스 웹 서버

DB(DataBase)

여러사람에 의해 공유되어 사용될 목적으로 통합하여 관리되는 데이터의 집합
여러 사람이 업무를 수행하는데 있어 사용하는 데이터들의 모임

DB 특징

즉시 처리하여 응답하는 실시간 접근성,
최근의 데이터를 유지하기 위한 계속적인 변화
동시에 데이터를 공유할 수 있는 동시 공유
내용에 대한 참조
데이터 논리적, 물리적 독립성

DB 종류

계층형 데이터베이스
네트워크형 데이터베이스
관계형 데이터베이스
NoSQL 등.

DBMS

데이터 베이스 관리 시스템(Database Management System, DBMS)
데이터베이스 관리하는 미들웨어.
데이터의 CRUD와 같은 기본 기능과 트랜잭션 처리 등 많은 기능 포함

RDBMS

  • Oracle DB
  • MySQL
  • Microsoft SQL Server
  • PostgreSQL

NoSQL

형태:

Key-value - 단순한 형태, 간단해 속도 빠르고 익히기 쉬움, 값의 내용을 사용한 쿼리 불가능해 애플리케이션 레벨에서 처리 필요

  • Redis
  • Amazon
  • DynamoDB
  • Memcached

Document - Key-Value와 비슷하나 단순한 Value가 아닌 계층구조인 도큐먼트로 저장.
쿼리를 사용할 순 있으나 일반 SQL과는 다름

  • MongoDB
  • Couchbase

Wide column stores - 테이블, 로우, 컬럼을 사용하지만 RDB와는 달리 컬럼의 이름과 포맷은 같은 로우라도 다를 수 있따. 2차원 Key-value 형태

  • Cassandra
  • HBase

Graph - 데이터를 그래프처럼 연속적인 노드, 엣지, 프로퍼티의 형태로 저장.
SNS나 추천 엔진, 패턴 인식 등 데이터 간의 관계를 위주로할 때 적합.

시스템 모니터링(System Monitoring)

Zabbix - 다양한 서버의 상태를 모니터링 가능
Datadog - SaaS. 따로 서버를 도입할 필요 없이 웹 브라우저에서 모니터링 가능.
멀티 클라우드 환경에서도 손쉽게 모니터링 가능
Mackerel - SaaS. 클라우드 서버 모니터링에 유용.

인프라 구성 관리

Immutable Infrastructure

서비스가 업데이트되면 기존 운영환경을 변경하는 대신 이미지를 새로 생성해 배포한다는 뜻.

Immutable 인프라는 이미지 하나로 서버를 쉽게 찍어냄.
해당 이미지만 관리하면 되어 관리에 용이.
또한 환경 자체를 배포할 수 있어 동일한 환경에서 테스트도 쉬움

인프라 구성 관리 툴

  • Bootstrapping : OS 시작 자동화
    -> 서버 OS 설치, 가상환경설정, 네트워크 구성 설정 등
    -> Vagrant

  • Configuration: OS나 미들웨어의 설정 자동화
    -> OS 설정, 각종 미들웨어 설정 자동화
    -> Ansible, Chef, Puppet

  • Orchestration: 여러 서버 관리를 자동화
    -> Kubernetes: 컨테이너 오케스트레이션의 사실 상 표준

도커 Docker

애플리케이션 실행에 필요한 환경을 이미지로 만들고 해당 이미지를 활용해 다양한 환경에서 실행 환경을 구축하기 위한 오픈소스 플랫폼.
도커 -> 내부 컨테이너 사용

개발자가 커밋 시, CI를 통해 도커 이미지로 빌드, 해당 이미지 관리.
개발 환경이든 테스트 환경이든, 실제 운영환경이든 해당 이미지를 배포하면 컨테이너에서 독립적으로 배포된 환경에서 동작 -> 오류 없이 동작 가능

Server

컴퓨터 네트워크에서 다른 컴퓨터에 서비스를 제공하기 위한 컴퓨터 or 소프트웨어
클라이언트에게 네트워크를 통해 정보, 데이터 등을 제공하는 시스템.

서버 종류

애플리케이션 서버, 컴퓨팅 서버, 데이터베이스 서버
파일 서버, 웹 서버, 프록시 서버, 메일 서버, 게임 서버....

profile
인정받는 개발자가 되고싶습니다.

0개의 댓글