일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Eda
- 머신러닝
- Ai
- 에이블스쿨
- cnn
- ETRI
- 시각화
- 한국전자통신연구원 인턴
- KT AIVLE
- 한국전자통신연구원
- python
- KT 에이블스쿨
- 가나다영
- 소셜네트워크분석
- 하계인턴
- 다변량분석
- ML
- 서평
- dx
- 시계열
- 하둡
- SQL
- matplot
- kaggle
- 기계학습
- hadoop
- 딥러닝
- r
- arima
- 빅분기
- 웹크롤링
- 빅데이터분석기사
- SQLD
- 에이블러
- 프로그래머스
- 에트리 인턴
- ggplot2
- 지도학습
- httr
- kt aivle school
- Today
- Total
소품집
[KT AIVLE] MS 아키텍처 - 가상머신과 컨테이너 비교 본문
Monolithic 아키텍처
장점
- 단일 코드 베이스로 애플리케이션 개발이 용이함 (어떤 기능이든지 개발 환경이 같아서 복잡하지 않음)
- 실행 파일 또는 디렉터리가 하나여서 배포가 용이함
- 분산된 애플리케이션에 비해 테스트를 더 빠르게 수행할 수 있음
- 내부 프로세스 간 통신 지연시간 최소화
단점
- 대규모 애플리케이션인 경우 만은 양의 코드를 개발자가 모두 이해하기 어렵기 때문에 추가 개발 및 유지보수가 어려움
- 일부분의 기능 오류가 전체 애플리케이션에 영향을 주고, 개별 컴포넌트 확장이 용이하지 못함 (안정성, 확장성 저하)
- 수정 > 전체 빌드 > 배포 진행이기 때문에 변경이 어려움
Microservice 아키텍처
장점
- 새로 추가되거나 수정사항이 있는 서비스만 빌드, 배포할 수 있음 (독립성)
- 전체 애플리케이션 중단될 위험 없이 특정 서비스에 대한 변경 사항을 배포함 (안정성)
- 일부분의 오류가 있으면 해당 기능만 오류가 나고, 유지보수로 정상화 가능 (높은 유지 관리성)
- 해당 기능에 맞는 기술, 언어, 버전, DB 등을 선택하여 사용할 수 있음 (기술 유연성)
단점
- 무분별한 개별 확산, 표준화 부족 문제가 있음
- 서비스끼리 네트워크상에서 서로 통신하는 과정에서 모놀리식 아키텍처에 비해 통신 오류가 발생할 확률이 높음
- 각 서비스별로 자체적인 인프라, 모니터링을 구축해야 하기 때문에 비용 발생
가상 머신 vs 컨테이너
가상머신 - 하이퍼바이저 기반 구현
- 하드웨어 레벨에서 가상화
- 가상 하드웨어 환경 위에 게스트 OS 설치됨
컨테이너 - 도커 기반 구현
- OS 레벨에서 가상화
- 컨테이너 엔진으로 애플리케이션 실행 환경을 격리함
- 도커로 컨테이너 이미지를 만들면 이미지에는 서비스와 서비스에 필요한 라이브러리를 같이 묶어서 가지고 있음
- 따라서 도커 컨테이너 가상화 솔루션은 OS에서 제공하는 자원 격리 기술을 이용해 컨테이너 단위로 서비스를 분리하고, 개발 환경 고려 없이 다양하게 배포할 수 있음
컨테이너 장점
1) 이동성 : 컨테이너를 지원하는 모든 os에서 컨테이너를 사용, 서로 다른 버전을 동시에 실행시킬 수 있음
2) 확장성 : 가볍고 빠르게 실행되어 확장이 용이, 뛰어난 리소스 활용도로 하나의 서버에서 많은 컨테이너 확장이 가능
3) 효율적 배포 : 개발, 테스트 및 프로덕션 환경에서 동일한 동작과 성능을 기대할 수 있음, 개발 주기 단축!
쿠버네티스
- 컨테이너 런타임을 통해 컨테이너를 다루는 도구
- 여러 서버에 컨테이너를 분산해서 배치하거나, 문제가 생긴 컨테이너를 교체하거나, 컨테이너가 사용할 pw and 환경 설정을 관리하는 일 > 컨테이너 오케스트레이션!!
1. Control Plane
Kube API Server
- 클러스터에서 컨트롤 플레인으로의 모든 통신을 처리함.
- 즉, API Server를 통해 다른 컴포넌트가 서로 필요한 정보를 주고받을 수 있음
etcd
- 쿠버네티스에서 필요한 모든 데이터를 key-value 형태로 저장하는 DB
Controller
- 제어 루프를 실행하여 클러스터의 상태를 감시하고 클러스터의 현재 상태가 원하는 상태가 되도록 함으로써 Pod를 관리
Scheduler
- 클러스터 안에서 노드 중 자원 할당이 가능한 알맞은 노드를 선택해 새로운 Pod를 실행해줌
2. Data Plane
kublet
- 클러스터 내부 모든 워커 노드에서 실행되는 에이전트로 파드 컨테이너의 실행을 직접 관리하고, 해당 컨테이너가 정상적으로 실행되는지 테스트함
kube-proxy
- 클러스터 안에서 별도의 가상 네트워크를 생성하고 관리하게 되는데, kube-proxy는 이런 가상 네트워크의 동작을 관리하는 컴포넌트
컨테이너 런타임
- 실제로 컨테이너를 실행시키는 런타임으로 도커를 가장 많이 활용 중
'AI > KT 에이블스쿨' 카테고리의 다른 글
[KT AIVLE] 에이블스쿨 미니프로젝트 4차 회고 + AICE 합격~! (0) | 2022.11.01 |
---|---|
[KT AIVLE] AWS 메세징 서비스 - SQS & SNS (0) | 2022.10.24 |
[KT AIVLE] AWS 모니터링, 인프라 자동화, 서버리스 실습 (0) | 2022.10.20 |
[KT AIVLE] AWS 글로벌 인프라 구조 (0) | 2022.10.19 |
[KT AIVLE] 인프라 기초 - 클라우드, 가상화 기술, 부하분산 (0) | 2022.10.15 |