Loading the catalog…
Loading the catalog…
velog
1. 오늘의 한 줄 요약 Spring Boot를 이용한 백엔드 개발 학습을 마무리하고, 하나의 애플리케이션을 여러 개의 작은 서비스로 나누어 개발하고 운영하는 MSA(Microservice Architecture) 의 기본 개념과 Spring Cloud의 역할을 알아보았다. 2. MSA란? MSA는 하나의 애플리케이션을 비즈니스 기능에 따라 여러 개의 작은 서비스로 나누는 아키텍처다. 각 서비스는 자신이 담당하는 기능을 독립적으로 개발하고 실행하며 배포할 수 있다. 필요한 경우 다른 서비스와 REST API나 메시지 등을 통해 통신한다. 예를 들어 쇼핑몰 서비스를 다음과 같이 나눌 수 있다. Client ↓ API Gateway ├─ 회원 서비스 ├─ 상품 서비스 ├─ 주문 서비스 └─ 결제 서비스 단순히 프론트엔드와 백엔드를 분리했다고 해서 MSA가 되는 것은 아니다. MSA에서는 백엔드 내부도 회원, 상품, 주문처럼 비즈니스 기능을 기준으로 나뉜다. 3. Monolithic Architecture와 MSA Monolithic Architecture Monolithic Architecture는 여러 기능을 하나의 애플리케이션에 포함하는 구조다. 회원, 상품, 주문 기능이 하나의 프로젝트에 들어 있으므로 구조를 파악하고 실행하기 쉽다. 하지만 일부 기능만 수정해도 전체 애플리케이션을 다시 빌드하고 배포해야 할 수 있다. Microservice Architecture MSA에서는 각각의 기능을 독립된 서비스로 분리한다. 구분 Monolithic Architecture MSA 구성 모든 기능이 하나의 애플리케이션에 포함됨 기능별로 서비스가 나뉨 배포 전체 애플리케이션을 함께 배포 서비스를 독립적으로 배포 가능 확장 전체 애플리케이션을 확장 필요한 서비스만 확장 가능 장애 하나의 문제가 전체에 영향을 줄 수 있음 장애를 서비스 단위로 격리 가능 통신 같은 애플리케이션 안에서 호출 네트워크를 통한 서비스 간 통신 복잡도 비교적 단순함 운영 및 데이터 관리가 복잡함 MSA는 무조건 좋은 구조가 아니라, 서비스 규모와 운영 환경에 따라 선택해야 하는 아키텍처다. 서비스를 분리하면 결합도를 낮추고 필요한 기능만 확장할 수 있지만, 네트워크 지연, 분산된 데이터의 일관성, 장애 추적과 같은 새로운 문제도 발생한다. 4. MSA의 주요 특징 작은 서비스 하나의 서비스는 너무 많은 기능을 담당하지 않고, 명확한 비즈니스 기능에 집중해야 한다. DDD(Domain Driven Design)에서는 서비스의 경계를 나누는 개념으로 Bounded Context 를 사용한다. 예를 들어 하나의 CRM 애플리케이션을 다음과 같이 분리할 수 있다. CRM ├─ 고객 서비스 ├─ 계약 서비스 └─ VOC 서비스 독립적인 서비스 각 서비스는 가능하면 다른 서비스와 강하게 결합되지 않아야 한다. 서비스마다 독립적으로 개발, 테스트, 배포할 수 있어야 하며 한 서비스의 장애가 전체 시스템으로 확산되지 않도록 설계해야 한다. 응집도가 높은 서비스 하나의 서비스에는 서로 관련된 기능이 모여 있어야 한다. 서비스의 책임이 명확하면 코드를 이해하기 쉬워지고, 수정으로 인해 다른 기능이 영향을 받을 가능성도 줄어든다. 자율적인 서비스와 팀 MSA에서는 서비스를 담당하는 팀이 개발뿐 아니라 테스트, 배포, 운영까지 함께 책임지는 경우가 많다. 서비스와 팀이 독립적으로 움직이려면 서로 직접 코드를 공유하기보다 정해진 API 규칙을 통해 통신해야 한다. 5. Cloud Native와 MSA MSA는 Cloud Native Architecture와 함께 자주 사용된다. Cloud Native Architecture가 중요하게 생각하는 특징은 다음과 같다. 필요한 서비스만 수평으로 확장할 수 있어야 한다. 서비스가 빠르게 생성되고 배포될 수 있어야 한다. 특정 서비스의 장애가 다른 서비스로 확산되지 않아야 한다. 컨테이너를 이용해 실행 환경을 일관되게 관리한다. CI/CD를 통해 빌드, 테스트, 배포 과정을 자동화한다. 로그와 상태를 관찰할 수 있어야 한다. 결국 MSA는 단순히 프로젝트를 여러 개로 나누는 것이 아니라, 독립적인 개발과 배포, 확장, 장애 격리를 가능하게 만드는 운영 방식까지 포함하는 구조 다. 6. Spring Cloud란? Spring Boot가 각각의 서비스를 개발하는 데 사용된다면, Spring Cloud는 여러 서비스로 구성된 분산 시스템을 운영할 때 필요한 기능을 제공한다. 대표적인 기능은 다음과 같다. Spring Cloud Config : 여러 서비스의 설정을 중앙에서 관리한다. Service Discovery : 실행 중인 서비스의 위치를 등록하고 검색한다. Spring Cloud Gateway : 클라이언트의 요청을 적절한 서비스로 전달한다. Load Balancing : 요청을 여러 서비스 인스턴스에 분산한다. OpenFeign : 다른 서비스의 REST API를 편리하게 호출한다. Circuit Breaker : 특정 서비스의 장애가 다른 서비스로 퍼지는 것을 막는다. 분산 추적과 모니터링 : 여러 서비스를 거친 요청의 흐름을 확인한다. Spring Boot → 각각의 Microservice를 개발 Spring Cloud → 여러 Microservice를 연결하고 운영 오늘은 각각의 기술을 직접 구현하기보다, 앞으로 어떤 구조와 기술을 배우게 되는지 전체적인 흐름을 이해했다. Spring Boot 학습이 하나의 백엔드 애플리케이션을 만드는 과정이었다면, 앞으로는 여러 Spring Boot 애플리케이션을 독립된 서비스로 구성하고 서로 연결하는 방법을 학습하게 될 것 같다.
What RADAR observed and classified to build this opportunity. It is what the source published, not a verification that the offer is still active.
[LG CNS AM 6기] 43일차 TIL : Spring Boot 학습을 마무리하고 MSA 시작하기 - Monolithic Architecture와 Microservice, Spring Cloud의 역할. 1. 오늘의 한 줄 요약 Spring Boot를 이용한 백엔드 개발 학습을 마무리하고, 하나의 애플리케이션을 여러 개의 작은 서비스로 나누어 개발하고 운영하는 MSA(Microservice Architecture) 의 기본 개념과 Spring Cloud의 역할을 알아보았다. 2. MSA란? MSA는 하나의 애플리케이션을 비즈니스 기능에 따라 여러 개의 작은 서비스로 나누는 아키텍처다. 각 서비스는 자신이 담당하는 기능을 독립적으로 개발하고 실행하며 배포할 수 있다. 필요한 경우 다른 서비스와 REST…
Open source