서비스 및 플랫폼을 개발하기 위해 필요한 모든 자원을 관리하는 기반.
서비스를 운영하기 위한 IT 리소스(서버, DB, 네트워크, 스토리지 등) 구축, 운영하기 위한 모든 개념 통칭.
즉, 데이터를 주고받기 위한 물리적 장비.
애플리케이션을 가동시키기 위해 필요한 하드웨어나 OS, 미들웨어, 네트워크 등 시스템 기반.
시스템의 성능, 안정성, 확장성, 보안같은 비기능적인 요구사항(non-functional requirement)와 관련
데이터 센터 및 전산실에 장비가 위치, 서비스 운영하는 구조
직접 관리할 수 있고, 기밀성이 높은 장점.
단점 : 고가의 장비, 사용량 예측 불가능
클라우드 프로바이더가 데이터 센터와 인프라를 보유하고 사용자에게 제공하는 형태
외부업체(아마존 AWS, Microsoft Azure)의 자원을 빌려다 쓰는 것
트래픽 변동이 많을 수 있거나 많을 경우 유리.
서버 장비 본체나, 데이터를 저장하기 위한 스토리지, 전원 장치
인프라에서 가장 low-level을 맡고 있는 것. 하드웨어/네트워크
온프레미스 시스템은 여러대의 서버 장비로 구성.
클라우드에서는 인스턴스 하드웨어 성능에 따라 선택 가능.'
사용자가 원격으로 접근 할 수 있도록 서버 연결하는 도구들
라우터, 스위치, 방화벽 등 네트워크 장비...
엑세스 포인트(Access Point, AP)
CPU 성능은 코어와 캐시 영향.
코어가 많을수록 동시 처리 연산 늘어나고
캐시의 크기가 클수록 메모리와 처리 속도의 성능이 좋아짐
CPU - 직렬 처리에 최적화된 몇개의 코어로 구성
GPU(Graphics Processing Unit) - 병렬처리에 최적화된 작고 많은 코어로 구성
주 기억장치. 데이터 용량이 크거나 전송 속도가 고속일수록 고성능.
서버용으로는 전력소모 적고, 오류처리 탑재된 것 선정
데이터를 저장하는 디바이스.
보통 스토리지의 속도가 제일 느림 -> 스토리지 용량이나 읽기, 쓰기 속도가 시스템 전체 속도에 영향
하드디스크, SSD로 이루어짐
데이터가 손실되면 안되기 때문에 대부분 고가용성(High Availablility HA, 오랜 기간 지속적으로 운영되는 것)을 위해 이중화(redundancy) or 다중화 구성.
이중화?
같은 장비 or 시스템이 장애가 나는 것을 대비해 같은 모듈을 2개(또는 그 이상) 준비.
무정전 전원공급장치(Uninterruptible Power Supply, UPS) - 전원 차단 방지
KVM 스위치 - 여러 대의 서버 관리
서버 랙 - 서버 장비 설치에 이용
보안을 위해 내부 네트워크와 외부 네트워크의 통신 제어, 불필요한 통신 차단
Network - 사용자가 원격으로 접근할 수 있도록 서버를 연결하는 도구들
Operating System, OS - 하드웨어와 네트워크 장비를 제어하기 위한 기본적인 소프트웨어
Client OS(Window, macOS...)
Server OS(Linux, Unix, Windows, Server 등)
Middleware - 서버 상에서 서버가 특정 역할을 하도록 기능을 제공하는 소프트웨어
Net + Work
컴퓨터들이 통신 기술을 이용해 그물망처럼 연결된 통신 이용 형태 의미.
두 대 이상의 컴퓨터와 같은 장치의 노드(node)들이 서로 패킷을 교환하며 통신하는 것
PAN(Personal Area Network)
LAN(Local Area Network)
MAN(Metroplitan Area Network)
WAN(Wide Area Network)
물리적으로 할당되는 48bit 주소.
앞 24bit는 네트워크 부품의 제조업체를 식별, 뒤 24bit - 각 제조업체가 중복되지 않도록 할당
인터넷이나 인트라넷 같은 네트워크에 연결된 장비 할당 번호
IPv4
IPv6
통신을 할 때 서로 어떻게 메시지를 주고 받고 어떤 언어를 사용할지 규칙이 필요.
이런 규약을 통신 프로토콜이라고 함.
OSI 모델은 국제 표준화 기구(International Organization for Standardization, IOS)에서 만든 컴퓨터의 통신 기능을 계층 구조로 나눈 모델.
이를 이용시 특정 네트워크 시스템에서 일어나는 일을 계층으로 활용해 시각적으로 이해 가능.
총 7계층. 데이터가 네트워크로 나갈때는 위층. 네트워크에서 데이터를 받을때는 아래층.
OS와 비즈니스를 처리하는 애플리케이션 사이에 들어가는 각종 소프트웨어 말함.
웹 서버, DBMS, 시스템 모니터링 툴 등 있다.
클라이언트가 보낸 HTTP 요청을 받아 웹 콘텐츠를 응답으로 반환, 서버쪽 애플리케이션 호출
여러사람에 의해 공유되어 사용될 목적으로 통합하여 관리되는 데이터의 집합
여러 사람이 업무를 수행하는데 있어 사용하는 데이터들의 모임
즉시 처리하여 응답하는 실시간 접근성,
최근의 데이터를 유지하기 위한 계속적인 변화
동시에 데이터를 공유할 수 있는 동시 공유
내용에 대한 참조
데이터 논리적, 물리적 독립성
계층형 데이터베이스
네트워크형 데이터베이스
관계형 데이터베이스
NoSQL 등.
데이터 베이스 관리 시스템(Database Management System, DBMS)
데이터베이스 관리하는 미들웨어.
데이터의 CRUD와 같은 기본 기능과 트랜잭션 처리 등 많은 기능 포함
형태:
Key-value - 단순한 형태, 간단해 속도 빠르고 익히기 쉬움, 값의 내용을 사용한 쿼리 불가능해 애플리케이션 레벨에서 처리 필요
Document - Key-Value와 비슷하나 단순한 Value가 아닌 계층구조인 도큐먼트로 저장.
쿼리를 사용할 순 있으나 일반 SQL과는 다름
Wide column stores - 테이블, 로우, 컬럼을 사용하지만 RDB와는 달리 컬럼의 이름과 포맷은 같은 로우라도 다를 수 있따. 2차원 Key-value 형태
Graph - 데이터를 그래프처럼 연속적인 노드, 엣지, 프로퍼티의 형태로 저장.
SNS나 추천 엔진, 패턴 인식 등 데이터 간의 관계를 위주로할 때 적합.
Zabbix - 다양한 서버의 상태를 모니터링 가능
Datadog - SaaS. 따로 서버를 도입할 필요 없이 웹 브라우저에서 모니터링 가능.
멀티 클라우드 환경에서도 손쉽게 모니터링 가능
Mackerel - SaaS. 클라우드 서버 모니터링에 유용.
서비스가 업데이트되면 기존 운영환경을 변경하는 대신 이미지를 새로 생성해 배포한다는 뜻.
Immutable 인프라는 이미지 하나로 서버를 쉽게 찍어냄.
해당 이미지만 관리하면 되어 관리에 용이.
또한 환경 자체를 배포할 수 있어 동일한 환경에서 테스트도 쉬움
Bootstrapping : OS 시작 자동화
-> 서버 OS 설치, 가상환경설정, 네트워크 구성 설정 등
-> Vagrant
Configuration: OS나 미들웨어의 설정 자동화
-> OS 설정, 각종 미들웨어 설정 자동화
-> Ansible, Chef, Puppet
Orchestration: 여러 서버 관리를 자동화
-> Kubernetes: 컨테이너 오케스트레이션의 사실 상 표준
애플리케이션 실행에 필요한 환경을 이미지로 만들고 해당 이미지를 활용해 다양한 환경에서 실행 환경을 구축하기 위한 오픈소스 플랫폼.
도커 -> 내부 컨테이너 사용
개발자가 커밋 시, CI를 통해 도커 이미지로 빌드, 해당 이미지 관리.
개발 환경이든 테스트 환경이든, 실제 운영환경이든 해당 이미지를 배포하면 컨테이너에서 독립적으로 배포된 환경에서 동작 -> 오류 없이 동작 가능
컴퓨터 네트워크에서 다른 컴퓨터에 서비스를 제공하기 위한 컴퓨터 or 소프트웨어
클라이언트에게 네트워크를 통해 정보, 데이터 등을 제공하는 시스템.
애플리케이션 서버, 컴퓨팅 서버, 데이터베이스 서버
파일 서버, 웹 서버, 프록시 서버, 메일 서버, 게임 서버....