컨테이너 인프라 환경은?
- 컨테이너를 중심으로 구성된 인프라 환경
컨테이너(container)?
- 하나의 운영 체제 커널에서 다른 프로세스에 영향을 받지 않고 독립적으로 실행되는 프로세스 상태를 의미
모놀리식 아키텍처
- 하나의 큰 목적이 있는 서비스 또는 애플리케이션에 여러 기능이 통합돼 있는 구조를 의미
장점
- 소프트웨어가 하나의 결합된 코드로 구성된다.
- 초기 단계에서 설계하기 용이, 개발이 좀 더 단순하고 코드관리가 간편하다.
단점
- 서비스를 운영하는 과정에서 수정이 많을 경우, 어떤 서비스에서 이뤄진 수정이 연관된 다른 서비스에 영향을 미칠 가능성이 커진다.
- 서비스가 점점 성장해 기능이 추가될수록 단순했던 서비스 간의 관계가 매우 복잡해질 수 있다.
설명
- 뉴스, 카페, 웹툰, 결제 등의 서비스가 하나의 애플리케이션 안에 포함된 경우
- 보안이나 데이터베이스 접속과 같은 설정을 공통으로 사용하면서 서비스를 구현한다면 개발 속도 매우 빠름
단점이 나오는 부분
- 웹툰 서비스의 사용량이 폭발적으로 증가해 서버를 증설해야 한다고 가정
- IaaS 덕분에 사용량 증가에 따라 인프라를 증설하는 것은 어렵지 않다.
- 웹툰 서비스 사용량이 늘었다 해서 뉴스, 블로그 등의 다른 서비스가 포함된 애플리케이션까지 확장하는 것은 비효율적
- 특정 서비스를 수정하는 과정에서 예기치 못한 에러가 발생한다면 해당 서비스 외에 전체 서비스를 이용할 수 없는 상황이 생길 수도 있다.
- 그래서 이러한 문제를 해결하는 방안으로 마이크로서비스 아키텍처가 등장했다.
마이크로서비스 아키텍처
- 시스템 전체가 하나의 목적을 지향한다.(모노폴리식 아키텍처와 동일
차이점
- 개별 기능을 하는 작은 서비스를 각각 개발해 연결하는 데서 그 차이를 보인다.
- 보안, 인증과 관련된 기능이 독립된 서비스를 구성하고 있으며 다른 서비스들도 독립적으로 동작할 수 있는 완결된 구조입니다.
장점
- 개발된 서비스를 재사용하기 쉽고, 향후 서비스가 변경됐을 때 다른 서비스에 영향을 미칠 가능성이 줄어들며 사용량의 변화에 따라 특정 서비스만 확장할 수 있다.
- 사용자의 요구사항에 따라 가용성을 즉각적으로 확보해야 하는 IaaS 환경에 적합하다.
단점
- 모놀리식 아키텍처보다 복잡도가 높다
- 각 서비스가 서로 유기적으로 통신하는 구조로 설계되기 때문에 네트워크를 통한 호출 횟수가 증가해 성능에 영향을 줄 수 있다.
설명
- 각 서비스는 API 게이트웨이와 REST API를 이용한 통신 방식으로 사용자(외부)의 요청을 전달합니다
- 서비스 개수는 고정된 것이 아니기 때문에 어떤 서비스가 등록돼 있는지 파악하기 위해 디스커버리를 사용
- 수많은 서비스의 내부 통신을 이벤트로 일원화하고 이를 효과적으로 관리하기 위해 별도로 이벤트 버스를 서비스로 구성합니다.
- 각 서비스는 필요한 기능이 특화된 데이터베이스를 선택해 개별 서비스에 할당할 수 있다
- 고객의 요구사항에 따라 분석 서비스를 새로 추가해야 할 때도 기존에 있는 이벤트 버스에 바로 연결하면 되므로 매우 유연하게 대응할 수 있다.
- 각 서비스는 독립적으로 동작할 수 있는 완결된 구조라서 이미 개발된 기능이 다른 서비스에 필요하다면 바로 재사용할 수 있다.
'배포관련 > 도커' 카테고리의 다른 글
Docker로 MySQL 설치하는 방법 (0) | 2022.10.23 |
---|---|
베어그런트로 테스트 환경 구축하기 (4) (0) | 2022.10.15 |
테스트 환경을 자동으로 구성하는 도구 (3) (0) | 2022.10.14 |
컨테이너 인프라 환경을 지원하는 도구 (2) (0) | 2022.10.14 |