-
클라우드 마이크로 서비스 - Monolithic vs MSAInfra/클라우드 2023. 12. 11. 13:25
Monolith vs Microservices
Monilith
모노리스 방식이라는 것은 애플리케이션을 개발함에 있어서 필요한 모든 요소를 하나의 커다란 소프트웨어 안에 포함시켜서 개발하는 방식이다. 데이터베이스 관련된 로직이라든가 비지니스 관련된 로직뿐만 아니라 화면을 처리해주는 프론트 기술까지 서비스에 대한 모든 내용들이 하나의 어플리케이션 안에서 유기적으로 연결되어 있고 배포되기 위해서 서로 의존성을 가진채 패키징 되어 운영서버에 배포되게 된다.
Monolith Architecture
- 모든 업무 로직이 하나의 애플리케이션 형태로 패키지 되어 서비스
- 애플리케이션에서 사용하는 데이터가 한곳에 모여 참조되어 서비스되는 형태
Microservices
어플리케이션을 구성하는 각각의 요소 밑 서비스의 내용을 분리해서 개발하고 운영하는 방식이다. 유지보수나 변경사항을 적용하는데 더 유리하다. 비지니스 로직의 프로세스가 변경이 되어서 새로 개발되고 배포되어야 한다고 가정 했을 때 변경이 필요한 서비스가 다른 서비스에는 영향을 주지 않거나 영향을 최소화 하면서 독립적으로 배포가 가능하다. 어플리케이션 전체가 다운이 되는 것을 피할 수 있다. 이런 마이크로 방식은 각각 용도에 맞는 컨테이너들을 모아서 서비스하는 방식이라고 생각하면 이해하기 쉽다.
What is the Microservice
- Small autonomous service that work together
In short, the microservice architectural style is an approach to developing a single application as a suite of small service, each running in its own process and communicating with lightweight mechanisms, on an HTTP resource API... contd
These service are built around business capacilities and independently deployable by fully automated deployment machinery ...contd
이런 서비스들은 비지니스 기능을 중심으로 구축되어야 하고, 완전하게 자동화된 배포 시스템을 사용해야 한다.There is a bare minimun of centralized management of these service, which may be written in different programming languages and use different data storage technologies
이런 서비스들은 최소한으로 중앙 집중식 관리가 되어야 하고, 서로다른 프로그래밍 언어와 서로다른 데이터 저장 기술을 사용할 수 있다.기존의 모노리스와 마이크로 서비스 개발 방식의 가장 큰 차이점은 하나의 서비스를 구성하고 있는 크기이다. 또 마이크로 서비스의 경우 서비스의 크기가 도메인의 특성을 고려해서 경계를 구분해야 하고, 구분된 서비스들은 독립적인 언어와 독립적인 데이터베이스를 사용할 수 있다.
🌉어플리케이션 개발의 간략한 순서
1. 고객의 의뢰를 받는다.
2. 프로젝트를 검토를 하고 승인을 내린다.
3. 개발조직 구성, 요구사항 수립, 업무 도메인 정의와 분석, 시스템 설계
4. 사용 언어와 데이터 베이스, 프로그램밍을 위한 네이밍 과 인터페이스를 등을 지정마이크로 서비스에서는 프로그램을 구현 할 때 개발 언어와 데이터베이스를 전체 어플리케이션에서 통일하는것이 아니라 각각의 서비스 별로 특색에 맞게 최적화 되어 있는 언어와 데이터베이스를 사용하는 것을 권장한다.
마이크로 서비스는 어플리케이션을 구성하는 다양한 서비스의 경계를 구분하고 각 서비스의 상황과 기능에 맞추어 개발 언어를 선택하고 각각의 서비스들은 RESTful API를 통해서 서로의 데이터를 제공해서 사용해서 개발하게 된다.
Monolith vs Front & Back vs Microservice Architecture
모노리스 방식과 마이크로 방식의 중간정도의 개발 방식으로 써 프론트엔드와 백엔드를 분리해서 개발하는 방식도 자주 사용된다.
사용자에게 화면을 보여주고 어떤 액션을 처리받도록 하기 위한 프로트엔드 부분과 백엔드 또는 서버사이드를 분리해서 개발하는 방식이라고 생각하면 된다. 대표적으로 모바일 어플리케이션에서 많이 볼 수 있는 방식이다. 모바일 어플리케이션은 대표적으로 안드로이 개발 언어인 자바나 코틀린, 아이폰에서는 오브젝트 씨나 스위프트를 사용해서 어플리케이션의 프론트 단을 개발한다. 그리고 서버사이드와의 통신을 위해서는 HTTP라든가 고유의 프로토콜을 이용해서 통신하게 될것이다. 이렇게 서버와 클라이언트를 분리해서 개발하게 되면 서로간에 필요한 통신만 맞다면 각각 최적화되어 있는 개발 환경을 독립적으로 유지하는 게 가능하게 된다. 사용자에게 보여지는 앱의 인터페이스나 화면을 변경할 경우에는 백엔드 서버를 같이 포함해서 빌드할 필요가 없어진다.
마지막 그림은 게시물에서 다루고 있는 마이크로 서비스에 대한 내용이다. 프론트엔드를 구분 했던것과 마찬가지로 백엔드의 각 서비스로 서로 의미있는 경계로 구분을 한다. 또 한 하나의 커다란 백엔드가 아니라 위 그림에서와 같이 프로젝트 서비스, 바시켓 서비스 또 페이먼트 서비스등 각각의 서비스가 독립적으로 구분되고 각각 스스로의 비지니스 로직과 데이터베이스 관련 로직을 가진다. 더불어 데이터 베이스도 하나의 통일된 데이터 베이스를 사용하는 방식이 아니라 독립적인 서비스에 맞게 분리되어 사용되고 있는 서비스의 모습을 확인할 수 있다.
[출처 - Spring Cloud로 개발하는 마이크로 서비스 애플리케이션, 저 Dowon Lee]
'Infra > 클라우드' 카테고리의 다른 글
클라우드 마이크로 서비스 - SOA vs MSA (0) 2023.12.12 클라우드 마이크로 서비스 - Microservice Architecture (1) 2023.12.11 클라우드 마이크로 서비스 - 12 Factors (1) 2023.12.08 클라우드 마이크로 서비스 - Cloud Native Application (1) 2023.12.08 클라우드 마이크로 서비스 - 소프트웨어 아키텍쳐,Cloud Native Architecture (2) 2023.12.08