ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • MSA(Microservice Architecture)
    BackEnd/Spring Cloud 2022. 6. 8. 20:06
    반응형

    Monolith Architecture

    • All services combined into one build, written in the same language and application framework.

      모든 업무 로직이 하나의 애플리케이션 형태로 패키지 되어 서비스되는 아키텍처입니다. 애플리케이션에서 사용하는 데이터가 한 곳에 모여 참조되어 서비스되는 형태로 일부 기능만 수정이 되어도 전체 애플리케이션을 빌드하고 배포해야 합니다.

     

    MSA(Microservice Architecture) 정의

    • MSA는 "함께 작동하는 작은 규모의 서비스들(Small autonomous services that work together.)" 입니다. 마이크로서비스 아키텍처 스타일은 소규모 서비스 모음을 단일 애플리케이션을 개발하는 접근 방식으로, 각각 자체 프로세스에서 실행되고 HTTP 리소스 API에서 경량 메커니즘으로 통신합니다. 또한 이러한 서비스는 비즈니스 기능을 중심(business capabilities)으로 구축되며, 완전히 자동화된 배포(automated deployment) 시스템을 통해 독립적으로 배포(independently deployable)할 수 있어야 합니다.

    - Building Microservices의 저자 Sam Newman의 정의 - 

     

    • MSA는 서로 다른 프로그래밍 언어(different programming languages)로 작성되고 서로 다른 데이터 저장(different data storage) 기술을 사용할 수 있습니다. 이러한 서비스들은 최소한의 중앙 집중식 관리가 되어야 합니다.

    - James Lewis and Martin Fowler 정의 - 

    https://www.luxoft.com/blog/lcameroon/answering-single-page-application-challenges-with-micro-front-end-architecture/

     

    Microservice 특징

    • Challenges: 기존 방식에서 많은 변화가 필요합니다.
    • Small Well Chosen Deployable Units: 독립적으로 배포 가능한 소규모 서비스들로 구성되어야 합니다. 
    • Bounded Context: 서비스들의 경계가 구분되어야 합니다.
    • RESTful: 서비스들간 REST API 방식으로 통신합니다.
    • Configuration Management: 애플리케이션의 환경 설정 정보(ip, port 등)는 외부 시스템에서 관리합니다. (환경 설정 정보 변경 시 별도 배포 불필요)
    • Cloud Enabled: Cloud Native 기술을 최대한 활용합니다.
    • Dynamic Scale Up And Scale Down
    • CI/CD
    • Visibility

     

    Microservice 장점

    • Improved fault isolation: 단일 모듈의 오류에 의해 전체 애플리케이션은 크게 영향 받지 않습니다.
    • Eliminate vendor or technology lock-in: 공급업체 또는 기술적 종속성을 제거합니다. 새로운 기술 스택 적용에 유연합니다.
    • Ease of understanding: 개발자는 서비스의 기능을 더 잘 이해할 수 있습니다.
    • Smaller and faster deployments: 더 작은 코드베이스 및 범위와 더 빠른 배포가 가능합니다.
    • Scalability: 확장성이 좋습니다.

     

    Microservice 단점

    • Communication between services is complex: 서비스 간 통신이 복잡합니다. 
    • More services equals more resources: 더 많은 서비스는 더 많은 데이터베이스와 트랜잭션 관리가 필요합니다.
    • Global testing is difficult: 글로벌 테스트가 어렵습니다. 의존성이 있는 서비스를 미리 확인해야 합니다.
    • Debugging problems can be harder: 디버깅 문제가 더 어려울 수 있습니다.
    • Deployment challengers: 배포가 복잡할 수 있습니다. 각 서비스 간 조정이 필요할 수 있습니다.

     

    Microservice 적용 시 고려사항

    Everything should be a microservice?

    • Multiple Rates of Change: 기존 개발 대비 어느 정도 공수가 필요한지 고려합니다.
    • Independent Life Cycles: 독립적인 라이프 사이클이 존재하는지 고려합니다.
    • Independent Scalability: 독립적으로 유지보수하고 확장할 수 있는지 고려합니다.
    • Isolated Failure: 해당 서비스의 오류가 전체 애플리케이션에 오류에 격리되어 있는지 고려합니다.
    • Simplify Interactions with External Dependencies: 외부 종속성과의 상호 작용이 단순화되어 있는지 고려합니다.
    • Polyglot Technology: 여러 가지 프로그래밍 언어와 데이터 스토리지 기술을 지원하는지 고려합니다.

     

    MSA 표준 구성요소

     

    MSA 기반 기술

     

     

     

    [참고 정보]

    반응형

    'BackEnd > Spring Cloud' 카테고리의 다른 글

    Spring Cloud Gateway  (0) 2022.06.22
    Spring Cloud Netflix Eureka  (0) 2022.06.18
    Spring Cloud  (0) 2022.06.09
    Cloud Native Application  (0) 2022.05.28
    Cloud Native Architecture  (0) 2022.05.28

    댓글

Designed by Tistory.