모놀리식 아키텍처
모놀리식 아키텍처는 하나의 큰 목적이 있는 서비스 또는 애플리케이션에 여러 기능이 통합되어 있는 구조를 의미한다.
장점
- 소프트웨어가 하나의 결합된 코드로 구성되기 때문에 초기 단계에서 설계하기 용이하다.
- 개발이 좀 더 단순하고 코드 관리가 간편한다.
단점
- 서비스를 운영하는 과정에서 수정이 많을 경우, 어떤 서비스에서 이뤄진 수정이 연관된 다른 서비스에 영향을 미칠 가능성이 크다.
- 서비스가 성장해 기능이 추가될수록 처음에는 단순했던 서비스 간의 관계가 매우 복잡해질 수 있다.
마이크로 서비스 아키텍처
마이크로서비스 아키텍처는 시스템 전체가 하나의 목적을 지향하하는 부분은 모놀리식 아키텍처와 동일하다. 하지만 개별 기능을 하는 작은 서비스를 각각 개발해 연결하는 데 있어서 차이를 보인다.
보안, 인증 등과 관련된 기능이 독립된 서비스를 구성하고 있으며다른 서비스들도 독립적으로 동작할 수 있는 완결된 구조이다.
장점
- 개발된 서비스를 재사용하기 쉽고, 향후 서비스가 변경되었을 떄 다른 서비스에 영향을 미칠 가능성이 줄어든다.
- 사용량의 변화에 따라 특정 서비스만 확장할 수 있다.
- 사용자의 요구 사항에 따라 가용성을 즉각적으로 확보해야하는 IaaS환경에 적합하다.
단점
- 모놀리식 아키텍처보다 복잡도가 높다.
- 각 서비스가 서로 유기적으로 통신해야하는 구조로 설계되기 때문에 네트워크를 통한 호출 횟수가 증가해 성능에 영향을 줄 수 있다.
컨테이너 인프라 환경
컨테이너 인프라 환경에 적합한 아키텍쳐
IT세계에서는 대부분 정해진 답이 없다. 주어진 상황에 적합한 기술이 있을 뿐이다. 모놀리식 아키텍처로 구현을 시작했지만, 시스템이 성장함에 따라 마이크로서비스 아키텍처로 전환할 수도 있다.
컨테이너 인프라 환경을 지원하는 도구
Docker
도커는 컨테이너 환경에서 독립적으로 애플리케이션을 실행할 수 있도록 컨테이너를 만들고 관리하는 것을 도와주는 컨테이너 도구이다.
도커로 애플리케이션을 실행하면 운영체제환경에 관계없이 독립적인 환경에서 일관된 결과를 보장한다.
Kubernetes
쿠버네티스는 다수의 컨테이너를 관리하는데 사용된다.
컨테이너의 자동 배포와 배포된 컨테이너에 대한 동작 보증, 부하에 따라 동적 확장등의 기능을 제공한다.
인프라가 필요한 기능을 통합하고 관리하는 솔루션이다.
API 게이트웨이, 서비스 디스커버리, 이벤트 버스, 인증 및 결제 등의 다양한 서비스를 효율적으로 관리할 수 있는 환경을 제공하고 이를 내외부와 유연하게 연결 해준다.
젠킨스
젠킨스는 지속적인 통합과 지속적인 배포(CI/CD)를 지원한다.
지속적 배포는 개발한 프로그램의 빌드, 테스트, 패키지화, 배포 단계를 모두 자동화해 개발 단계를 표준화한다.
개발된 코드의 빠른 적용과 효과적인 관리를 통해 개발 생산성을 높이는데 초점이 맞춰져 있다.
프로메테우스와 그라파나
프로메테우스와 그라파나는 모델링을 위한 도구이다.
프로메테우스는 상태 데이터를 수집하고, 그라파나는 프로메테우스로 수집한 데이터를 관리자가 보기 좋게 시각화한다.
컨테이너 인프라 환경에서는 많은 종류의 소규모 기능이 각각 나누어 개발되기 때문에 중앙 모니터링이 필요한데, 이를 효율적으로 모니터링하는 방법 중 하나가 프로메테우스와 그라파나의 조합이다.
'기타 > 개발환경 세팅' 카테고리의 다른 글
베어그런트 설치하기 (0) | 2023.11.30 |
---|---|
버추얼 박스 설치하기 (0) | 2023.11.28 |