디지털 산업의 성장하면서 소프트웨어의 아키텍처는 중앙 집약적인 모놀리식 아키텍처에서 마이크로서비스 아키텍처로 점차 변화하고 있는 추세이다.
그러면 각 아키텍처들이 무엇인지, 왜 변화하고 있는지 알아보자.
모놀리식 아키텍처 (Monolithic Architecture)
전통적인 소프트웨어 개발 모델로, 전체 애플리케이션을 하나의 통합된 패키지로 개발, 배포하는 방식으로 모든 시스템은 하나로 연결돼 관리된다.
서비스가 한곳에 집중돼 있어 규모가 작을 경우 관리하기 쉬울 수 있으나 다음의 문제점들을 가지고 있다.
- 규모가 커질수록 유지보수의 복잡도도 증가하고 한 개의 시스템에 문제가 생기면 전체 시스템 장애로 문제가 발생할 수 있다.
- 하나의 모듈을 수정하면 전체 애플리케이션을 다시 배포해야 하며 서버의 기동과 빌드, 배포에 드는 시간이 길어진다.
- 대량 트래픽, 복잡한 트랜잭션 등의 요구 사항에 유연하게 대처하기 힘들다.
- 기존의 기능(기술)을 변경이 어렵다.
- 하나의 서비스만 별도로 확장을 하지 못한다.
마이크로서비스 아키텍처 (MicroService Architecture)
마이크로서비스는 독립된 각각의 모듈을 조립해 하나의 서비스를 만드는 아키텍처이다.
기능별로 작게 나뉘어진 서비스가 독립적으로 동작하는 서비스를 의마하고 업데이트, 테스트, 배포, 확장은 각 서비스벼롤 독립적으로 수행할 수 있다.
마이크로 아키텍처는 모놀리식 아키텍처의 문제점들의 대부분을 보완할 수 있는 장점을 가지고 있다.
새로운 기능을 추가 배포하는 것도 비교적 편리하고 원하는 서비스만 확장 및 업그레이드할 수 있다.
시스템 장애가 발생시 해당 서비스에만 장애가 일어나 비교적 대처도 유연하게 할 수 있다.
다만, 개발 및 운영을 위해 많은 인원이 필요하기 때문에 규모가 작은 팀의 경우 오히려 서비스가 분리돼 관리가 복잡해지고 운영 부담이 증가할 수 있다.
많은 기업들이 MSA에 관심을 가지면서 자연스럽게 거기에 맞는 기술들도 관심이 많이 올라가서 다양한 기술들이 주목받고 있다. 무슨 데이터가 사용될지 명확하지 않은 상태에서 사용할 수 있는 NoSQL유형 데이터베이스와 다양한 메시지 큐 기술들 (RabbitMQ, Kafka, Redis 등), 별도로 서비스를 구현할 수 있는 기술들이 많이 떠오르고 있다.
나도 그중에 메시지 큐에서 Kafka, 인메모리 기반으로 데이터를 저장하고 관리가 가능하고 메시지 큐로도 사용이 가능한 Redis, 역색인 방식으로 검색에 특화된 ElasticSearch의 3가지 기술을 위주로 조금씩 더 파보면 많은 도움이 될 듯하다.
3가지 기술 모두 하나의 기능으로만 사용되는 게 아니라 다양하게 활용할 수 있는 기능들도 있어 조금씩 폭을 넓혀가야겠다.
참고 자료 - https://www.nginx.com/blog/introduction-to-microservices/
'생각정리 > 기타' 카테고리의 다른 글
공채에 대한 좋은 경험 (1) | 2024.02.24 |
---|---|
[수학] 좌표를 가지고 구할 수 있는 공식 (0) | 2024.02.06 |
웹 소켓이란? (1) | 2024.01.24 |
[Excel] 중복된 항목 제거 (0) | 2022.05.06 |
[Excel] 그룹 별 번호 매기기 (종류별 따로 번호 매기기) (0) | 2022.05.06 |