Microservice

SEOKWOO LEE·2022년 10월 26일
0

마이크로서비스(microservice)는 애플리케이션을 느슨하게 결합된 서비스의 모임으로 구조화하는 서비스 지향 아키텍처(SOA) 스타일의 일종인 소프트웨어 개발 기법이다. 마이크로서비스 아키텍처에서 서비스들은 섬세(fine-grained)하고 프로토콜은 가벼운 편이다. 애플리케이션을 더 조그마한 여러 서비스로 분해할 때의 장점은 모듈성을 개선하고 애플리케이션의 이해, 개발, 테스트를 더 쉽게 해주고 애플리케이션 침식에 더 탄력적으로 만들어 준다. 규모가 작은 자율적인 팀들이 팀별 서비스를 독립적으로 개발, 전개, 규모 확장을 할 수 있게 함으로써 병렬로 개발할 수 있게 한다. 또, 지속적인 리팩터링을 통해 개개의 서비스 아키텍처가 하나로 병합될 수 있게 허용한다. 마이크로서비스 기반 아키텍처는 지속적 배포와 전개(디플로이)를 가능케 한다. -Wikipedia

Nestjs에서 Microservice를 예로 들자면 Monolith는 하나의 Nest 프로젝트에 API들을 설계한것이라면 Microservice는 API별로 Nest 프로젝트를 만들어 API들을 독립적으로 실행하게 만드는것이다.

Monolith 방식은 서버 오류 발생이나 업데이트로 인해 내부 코드를 변경하였다면 전체 서비스를 중단 시키고 이를 적용해야한다.

반면, Microservice 방식은 예를 들어 결제 서비스에 업데이트가 있다면 다른 서비스들은 유지시키고 결제 서비스만 중단시키고 수정 및 업데이트 작업을 진행하면 된다.

Microservice 특징

  • 자율성: Microservice 구성 서비스는 다른 서비스 기능에 영향을 주지 않고 개발,수정,배포,운영할 수 있다.
  • 전문성: 문제를 해결하기 쉽고 서비스가 복잡해지면 작은 서비스로 분할할 수 있다.

Microservice 장점

  • 민첩성: 각 서비스별 팀 구성을 하면 전문성이 올라가고 유지 관리에 신속해진다.
  • 유연한 확장성: 독립적인 특성으로 확장에 용이하다.
  • 손쉬운 배포
  • 기술적 자유: 독립적인 특성으로 서비스별 최적의 도구를 사용할 수 있다.
  • 재사용 가능한 코드: 소규모 모듈로 분할 가능하므로 비슷한 기능의 다른 서비스 생성 시 사용 가능하다.
  • 복원성: 독립적인 특성으로 실패에 대한 어플리케이션 저항성이 증가한다.

간단한 설명만으로도 Monolish보단 Microservice가 좋아보인다.
하지만 Microservice는 용량이 커지고 서버가 많아지므로 비용이 많이 든다는 단점이 있다.
따라서 작은 서비스에 적합하지 않다.
상황에 맞게 서비스를 구축하는 것이 적절하다.

profile
내가 보기위해 만든 나만의 공부 노트

0개의 댓글

관련 채용 정보