본문 바로가기
Software Engineering/개발 모델 및 아키텍쳐

Monolithic, Microservices, Nanoservices Architecture

by 부뚜기 2023. 5. 20.
반응형

‘모노리식 아키텍처’란 하나의 애플리케이션을 전체 시스템 안에서 독립적으로 실행할 수 있도록 설계된 소프트웨어 구성 방식을 말한다. 

즉, 각각의 모듈들은 자신만의 운영체제 위에서 작동하며 다른 모듈과의 상호작용 없이도 독자적으로 구동되는 구조다. 이러한 개념으로부터 나온 마이크로 서비스 아키텍처는 기존의 단일화된 플랫폼 대신 서로 다른 종류의 컴퓨팅 환경에서도 적용될 수 있는 유연한 개발 모델을 제시한다. 

또한 작은 단위의 서비스들끼리 느슨하게 결합하여 비즈니스 로직에만 집중할 수 있게 함으로써 보다 높은 품질의 결과물을 도출하도록 한다.

Monolithic Architecture

모놀리식 아키텍처(Monolithic Architecture)는 전통적인 애플리케이션 아키텍처로, 애플리케이션 전체가 하나의 큰 덩어리로 구성된다.

이러한 아키텍처에서는 데이터베이스, 서버 애플리케이션 로직, 사용자 인터페이스 등 모든 구성 요소가 서로 긴밀하게 결합되어 있다. 과거에는 모놀리식 아키텍처가 많이 사용되었지만, 최근에는 다른 아키텍처 패턴들이 더욱 강조되고 있다.

모놀리식 아키텍처는 업데이트 및 유지보수가 복잡해지고 확장성이 떨어지는 등의 단점이 있다. 또한 하나의 큰 애플리케이션에서 불필요한 부분까지 전부 로딩되어야 하기 때문에 애플리케이션의 실행 속도가 느려질 가능성이 있다.

하지만 모놀리식 아키텍처는 작은 규모의 애플리케이션이나 특별한 경우에는 여전히 유용할 수 있다.

반응형

Microservices Architecture

마이크로서비스 아키텍처(Microservices Architecture)는 하나의 애플리케이션을 작은 여러 개의 서비스로 분해하는 아키텍처 패턴이다.

각각의 서비스는 자체적으로 실행될 수 있으며, 서로 다른 기능을 담당하며, 서비스 간 통신을 통해 작동한다. 마이크로서비스 아키텍처는 기존의 모놀리식 아키텍처와 비교하여 유연성과 확장성이 더 높다.

마이크로서비스는 독립적으로 배포될 수 있으므로 개발자들은 쉽게 필요한 서비스만 수정하거나 추가할 수 있다.

또한 각각의 서비스는 작은 규모로 실행되므로, 필요할 때마다 서비스를 확장하거나 축소할 수 있다. 하지만 마이크로서비스 아키텍처는 전체적인 실시간 데이터 일관성을 유지하기 위해 추가적인 노력이 필요하다. 또한 서비스 간 통신 문제를 해결하기 위한 전략이 필요하며, 각 서비스를 분리하고 그들 간의 상호작용을 조율하기 위해 클라우드 호스팅 및 컨테이너 기술을 사용해야 할 수도 있다.

 

Nanoservices Architecture

나노서비스 아키텍처(Nanoservices Architecture)는 마이크로서비스 아키텍처의 한 유형으로, 핵심적인 비즈니스 로직 대신 모든 로직을 작은 단위의 독립적인 서비스 단위로 분리한다.

나노서비스는 큰 마이크로서비스와 달리 매우 작은 범위로 개발되며, 서비스 내부에서는 독립적인 비즈니스 로직과 데이터베이스를 사용한다. 이러한 작은 크기의 서비스는 개발, 배포 및 확장이 매우 쉽다.

또한, 나노서비스는 각각이 작은 단위로 구성되어 있기 때문에 서비스 간의 의존성을 최소화하여 개발과 유지보수를 원활하게 할 수 있다.

하지만, 나노서비스 아키텍처는 시스템 전체를 설계하고 구현하기가 더 어려울 수 있다. 또한 개별 서비스의 수가 증가하면 로깅, 모니터링 및 운영에 대한 문제가 발생할 수 있으며, 전체적인 시스템 보안과 안정성 등의 개인정보 보호 정책도 고려해야 한다. 또한, 나노서비스는 각 서비스의 작은 크기로 인해 서비스 내부에서 데이터 일관성을 보장하기 위한 추가적인 노력이 필하다.

 

모놀리식 아키텍처(Monolithic Architecture), 마이크로서비스 아키텍처(Microservices Architecture), 나노서비스 아키텍처(Nanoservices Architecture)는 서비스 지향 아키텍처 중에서 가장 일반적으로 사용되는 세 가지 패턴이다.

각각의 아키텍처는 서로 다른 특징을 가지고 있으며, 선택할 때는 애플리케이션의 크기, 복잡성 및 다른 요구사항을 고려해야 한다.

 

모놀리식 아키텍처는 전체 애플리케이션이 하나의 덩어리로 되어있으므로 딱히 확장할 수 없지만, 개발 및 테스트가 상대적으로 쉬워서 작은 규모의 애플리케이션에 적합하다.

 

마이크로서비스 아키텍처는 각각의 서비스 단위로 구성되어 있어서, 각 기능별로 개별적인 서비스를 만들어서 이들을 연결하는 아키텍처이다. 서비스 간의 의존성이 낮기 때문에 개발과 유지보수가 훨씬 쉽고 더욱 확장성이 용이하다.

하지만 각 서비스가 자체적으로 실행되므로, 관리 및 구현이 복잡할 수 있다.

 

나노서비스 아키텍처는 마이크로서비스에서 더욱 작은 단위로 체계화하는 패턴이다.

나노서비스는 작은 범위의 서비스로 구성되어 있어 개발, 배포, 확장이 간편하다.

하지만 전체적인 시스템 설계 및 구현하기가 다소 어려울 수 있고, 개별 서비스의 수가 증가하면 확장성, 로깅, 모니터링, 운영 등에서 문제가 발생할 수 있다.

 

따라서, 애플리케이션의 크기와 사용자 요구 사항에 따라 적절한 아키텍처를 선택하는 것이 중요하다.

반응형

댓글