1. 모놀리식 아키텍처

모놀리식 아키텍처는 오늘날에도 널리 사용되고 있는 아키텍처다. 대부분 단일 프로세스에서 실행되거나 몇몇 시스템에서 몇 개의 프로세스로 실행되는 거대한 모놀리식 애플리케이션이었다.

 

모놀리식 아키텍처와 마이크로서비스 아키텍처 비교

장점

1. 간단한 개발

2. 간편한 배포

3. 단순한 확장성

 

모놀리식 아키텍처에서는 애플리케이션을 매번 릴리스 할 때 마다 개발자가 전체 애플리케이션을, Java의 경우 WAR파일을 패키징 하거나, Ruby, Node.js의 경우 단일 디렉터리 계층으로 묶어서 배포해야 했다.

 

단점 

1. 코드 품질이 낮아짐

2. 애플리케이션의 시작이 오래걸림

3. 확장이 어려움

4. 다양한 기술 적용의 어려움

 

모놀리식 애플리케이션은 모든 것이 서로 강하게 결합하여 구성되어 단일 OS의 단일 프로세스로 실행되기 때문에 모든 것을 하나의 애플리케이션으로 개발 배치 관리되어야 한다. 즉, 조그마한 추가 및 변경에서 전체를 재배포해야 한다.

 

2. 마이크로 서비스 아키텍처

모놀리식 아키텍처가 크기가 커짐에 따라 발생하는 문제점을 극복하기 위해 기능적으로 세분화되고 독립적으로 구성

세분화되고, 독립적으로 작동하는 마이크로 서비스 기반의 애플리케이션은 API를 통해 서로 다른 마이크로 서비스와 통신하게 된다. 여러 마이크로 서비스 사이에는 일반적으로 동기방식인 HTTP/RESTful API 또는 비동기 방식인 AMQP프로토콜을 이용하여 통신한다. 

 

장점 

1. 크고 복잡한 애플리케이션을 지속적으로 배포 - 유지보수성, 테스트 용이성, 배포 효율성, 독립 개발, 배포 확장 가능

2. 개발에 대한 생산성 증가 배포 속도 향상

3. 향상된 장애 격리

4. 다양한 기술 적용 가능

 

단점 

1. 분산 설계 시스템에 따른 복잡성 - 서비스 간 통신 메커니즘을 따로 구현해야 함

2. 배포 및 관리 운영상의 복잡성

3. 증가된 리소스 소비 

 

 

3. DevOps

예전에는 개발팀에서 애플리케이션을 개발해 QA에 넘겨주면 테스트 후, 다시 운영팀에게 넘겨주면 애플리케이션을 배포, 관리 및 실행하는 흐름을 가진다. 그러나 최근에는 테스트뿐만 아니라 배포 이상의 작업에 개발자가 관여하고, 애플리케이션의 전체 라이프 사이클을 함께 관리하는 것이 효율적이라는 것을 알게 되었다. 

즉, 이런 소프트웨어 개발, 품질, 운영 팀의 소통 협업 및 통합을 강조하는 개발환경 및 문화를 DevOps라고 한다.

 

DevOps

 

+ Recent posts