99클럽 27일차 TIL: 아키텍처 패턴 - SOA

2024. 4. 30. 15:51개발 공부

728x90
반응형

#1. 오늘의 학습 키워드

개발 아키텍처 패턴 중 SOA에 대해


#2. 공부한 내용

1. SOA

- 개발하고자하는 프로젝트 전반을 기능 단위로 서비스로 쪼개서 구축하여, 개발된 서비스들을 조합하여
새로운 서비스를 만드는 구조.
  • Service-Orientd Architecture 의 약자.
  • 말그대로 서비스를 지향하는 구조다.
  • 이때의 서비스의 정의
    • 플랫폼에 종속되지 않고, 표준화된 호출 인터페이스 (일반적으로 Rest API 등) 으로 구현된 기업의 특정 업무 혹은 기능을 나타내는 독립적인 소프트웨어의 컴포넌트.
    • 상호 조합이 가능하여 느슨하게 결합되어있다는 특징이 있다.
    • 중요한 것은 기업이 제공하고자 하는 특정 비즈니스 기능을 표현하는 것이다.
      • 쇼핑몰의 계좌이체 서비스는 서비스가 되지만, 결제시 보안 시스템 등 구축은 서비스가 될 수 없다.
    • 이러한 서비스들을 유기적으로 결합하여, 통신 및 연동을 통해서 하나의 어플리케이션을 구축한다.
      • 결제내역 조회 서비스, 판매 물품 조회 서비스, 계좌이체 서비스 등.. → 쇼핑몰 어플리케이션
  • 서비스의 특징
    • 수직적 분할
      • 전체를 여러개의 서비스로 분할하여, 독립적으로 개발에 착수.
      • 수평적 분할
        • 데이터 계층 - 비즈니스 계층 - 뷰 계층으로 별로 분할하는 방법
      • 수직적 분할
        • 분할 된 조각 안에 위에서 언급된 계층들이 다 포함되어있음
    • 표준 인터페이스 기반
      • Restful API 등 표준 기술로 서비스가 구현되어야한다.
    • 느슨한 결합
      • 서비스 간 의존성을 최소화한다.
      • 독립적인 서비스를 위함
    • 조합 가능
      • 결국 서비스는 하나의 큰 어플리케이션으로 제공되어야 하기에, 서비스 간 연결 및 조합이 가능해야한다.
    • 큰 단위의 서비스 분류
      • 서비스의 분류 기준은 업무 분류 기준을 따라간다.

1) 장점

  • 빠른 요건 대응
    • 기존에 만들었던 서비스를 부품을 이어 붙이듯이 사용 가능하다.
    • 따라서 높은 재사용성과 높은 개발 생산성을 가진다.
    • 또한 기획자와 개발자가 바라보는 하나의 어플리케이션에 대한 관점이 흡사해지며 커뮤니케이션 장벽이 허물 수 있다.
      • 똑같이 기능 중심으로 바라보기 때문.
  • 레거시 활용
    • 예를 들어 결제 관련 서비스가 구현된 지 오래 되었다하더라도, 새로운 어플리케이션에 해당 서비스를 잘 연결 시킬 수만 있다면 크게 문제가 되지 않는다.
    • 따라서 SOA 구조로 신규 환경 및 시장으로 진입하는 것은 유리하다.

2) MSA vs SOA

  • 각 서비스간의 연결 방법에서의 차이가 있다.
    • SOA는 ESB (Enterprise Service Bus) 등 미들웨어로 서비스 간 연결을 중앙 집중 식으로 관리한다.
    • MSA는 서비스 간 독자적인 연결로 ( 메시징, API 등) 분산 관리를 한다.
  • 개념 범주 상 차이가 있다.
    • SOA는 전사적인 개념으로, 사용자 입장에서 기존 서비스와 새로운 서비스를 동시에 경험해도 무방한 경우 사용할 수 있다.
      • 즉 사용자 입장에서도, 해당 어플리케이션은 여러 서비스의 결합인 것을 느낄 수 있다.
    • MSA는 개발 구조의 개념으로, 사용자 입장에서는 Monolith 구조로 개발 된 어플리케이션과 차이를 느끼지 못해야 한다.
      • 물론, 성능과 요청사항에 대한 빠른 대응과는 별개인 기능 관점에서의 얘기이다.


#3. 오늘의 회고

  • SOA는 MSA와 흡사한 점이 많은 구조인 것 같다.
    • 단일 어플리케이션을 여러 서비스로 분리하면서, 아래와 같이 흡사한 이점을 두 구조 모두 획득한다.
      • 재사용성, 확장성, 기술 다양성, 분산 환경 지원 등
  • 그러나 SOA와 MSA는 각자 해결하고자 하는 문제가 다르므로, 개념 적으로 다른 점이 존재한다.
  • 또한 각 구조 속 서비스가 얼마나 독립적일 수 있는 가에서도 큰 차이가 있는 것 같다.
    • SOA는 조금 과장해서 각 서비스가 독자적인 어플리케이션을 이룰 수도 있는데
    • MSA는 웬만한 상황에서는 불가능하다.
  • 여러 아키텍처에 대해서 공부할 때, 물리적 구조 관점에서는 흡사해 보여도, 각 개념이 등장한 배경에 따라서 치중하는 점이 다른 것을 유의하며, 헷갈리지 않는 것이 중요한 것 같다.
728x90
반응형