0.Docker & Kubernetes의 이해

프롬·2021년 10월 6일
0

0. Infrastucture

인프라란, 내가 만든 서비스가 돌아가기 위해 필요한 기반 시설과도 같다.
예를 들어 단순히 우리가 빵 가게를 차린다고 생각하면, 빵을 팔 가게도 있어야할 것이고, 빵집에 전기도 들어와야할 것이다. 이와 마찬가지로 IT인프라란, 서비스가 돌아가기 위해서 서버나 네트워크 장비, 서비스를 유지, 관리할 소프트웨어 등을 포함한다.
https://www.ibm.com/kr-ko/topics/infrastructure

(인프라 환경의 발전)
인프라 환경이 발전함에 따라, 컨테이너 인프라 환경이라는 게 생겨났다. 컨테이너 인프라 환경이란, 독립적인 환경에서 개발해도 모두 동일한 결과를 얻을 수 있고 소프트웨어의 성능과 인프라의 리소스를 최대한 확보할 수 있는 인프라 환경이다. 이제 인프라에 대한 이해가 어느정도 되었으니 만드는 어플리케이션의 구조를 살펴보자.

1. Monolithic Architecture

Mono-라는 이름과 같이 하나의 어플리케이션 내에 여러가지 서비스를 갖추고 있는 경우이다. 하나의 어플리케이션에 여러 가지 서비스가 통합되어있으므로,

  1. 빠른 개발 속도
  2. 비교적 안전한 보안

하지만, 단점도 존재하는데

  1. 서비스가 상호 의존을 하고 있어서 에러가 날 경우 골치 아파진다
  2. 수정 사항이 있으면 전체를 재빌드, 배포해야한다.
  3. 유지보수의 어려움
  4. 가동 시간

보통 은행의 경우 모놀리식 아키텍처를 사용한다고 한다.

2. Microservice Architecture

MSA는 시스템 전체(예를 들면 네이버)에서 각각의 서비스가 독립되어 있는 경우를 이야기한다. 따라서 장점은

  1. 유지보수가 쉽다
  2. 해당 기능에 맞게 다양한 접근이 가능하다.
  3. 빠른 빌드와 배포가 가능하다.
  4. 특정 서비스 부분을 이해하기 쉽다.

반대로 단점은,

  1. 서비스끼리의 통신 중 오류가 발생할 수 있다.(이로인해 가동시간의 증가 가능성)
  2. 서비스 마다 데이터베이스를 접근하는 방식같은걸 새로 만들어야하기 때문에 개발하기 까다로울 수 있다.
  3. 정말 많은 호출이 존재하기 때문에 이런 것을 모니터링하기가 어렵다.

이런 특성 때문에 마이크로 아키텍처를 이용하기 좋은 인프라(인프라를 잘게 잘게 쓸 수 있으므로)가 바로 컨테이너 인프라 환경이라고 할 수 있다. 여기서 컨테이너 자체가 DOCKER이고, 이를 관리하는 것을 Kubernetes라고 한다.
https://www.ibm.com/kr-ko/cloud/learn/microservices#toc------aaMEAd1V

추가적인 내용이나, 비판을 환영합니다!
(다만 공격적이면 상처를 받을 수가 잇읍니다..)

profile
경희대 소프트웨어융합학과 게임컨텐츠트랙 Web / Game Graphics / 딥러닝

0개의 댓글