마이크로서비스 아키텍처, 꼭 필요한건가? 마이크로서비스에 대한 전반적인 내용들을 알아봅니다.
이번 시간에는 마이크로서비스에 대한 모든 것들을 한번에 알아보려고 합니다. 소프트웨어가 잘 정의된 API를 통해 통신하는 소규모의 독립적인 서비스로 구성되어 있는 경우에 소프트웨어 개발을 위해 꼭 필요한 기술 중 하나라고 하는 만큼, 중요시 여겨지고 있는 그런 존재라고 봐도 무관할 것 같습니다.
애플리케이션의 확장을 용이하게 하고 개발 속도를 앞당겨 혁신을 실현하고 새로운 기능의 출시 시간을 단축할 수 있게 해 줍니다. 애플리케이션이 독립적인 구성 요소로 구축되어 각 애플리케이션 프로세스가 서비스로 실행되는데, 이러한 서비스는 경량 API를 사용하여 잘 정의된 인터페이스를 통해 통신하고 서비스는 비즈니스 기능을 위해 구축됩니다.
서비스가 독립적으로 실행되기 때문에 애플리케이션의 특정 기능에 대한 수요를 충족하도록 각각의 서비스를 업데이트, 배포 및 확장할 수 있게 되는 것인데 그럼 이 기술에 대해서 좀 더 자세히 살펴보도록 하겠습니다.
마이크로서비스
전통적인 애플리케이션 구축 방식에서는 모놀리식에 중점을 뒀고 애플리케이션에서 구축 가능한 모든 부분이 하나의 애플리케이션에 포함되어 있었습니다. 이 방식의 단점은 애플리케이션이 커질수록 새로운 문제를 해결하고 새로운 기능을 추가하는 것이 어려워진다는 점이었는데 이 마이크로서비스를 도입하여 문제를 해결하고 개발 및 대응 속도 개선에 도움을 주고 있습니다.
여기서 마이크로서비스는 소프트웨어를 구축하기 위한 아키텍처이자 하나의 접근 방식으로 알려져 있습니다. 앱을 상호 독립적 최소 구성 요소로 분할하여 모든 요소를 하나의 애플리케이션으로 구축하는 전통적인 모놀리식 방식 대신에 독립적으로 연동되어 동일한 태스크를 완수하는 방식으로 구성됩니다. 세분화, 경량화되어 있다보니 기존 모놀리식 방식에 비해 더 높은 성능을 보여주고 있다고 보면 됩니다.
그럼 마이크로서비스를 채택함으로써 어떤 이점이 있을지 궁금해하실 수 있는데, 우선 이 기술을 채용함으로써 각 구성 요소에서는 다른 서비스의 기능에 악영향을 주지 않으며 개발, 배포, 운영 및 확장이 가능해지고 서비스가 코드나 구현 방식을 공유할 필요가 없다보니 높은 자율성을 가지고 있고 각 서비스에 일련성을 두기 위해 특정 문제를 해결하는데 중점으로 만들어져서 추후에 서비스가 복잡해지면 더 작은 서비스로 분할할 수 있게 되었습니다.
그리고 마이크로서비스는 독립적인 소규모 팀을 육성하는데 큰 역할을 해주기도 하는데, 이러한 팀 안에서 소규모 컨텍스트 내의 독립적이면서도 신속한 업무 처리가 가능해졌고 각 서비스가 지원하는 앱의 기능을 충분히 충족할 수 있도록 필요한 인프라에 따라서 규모를 적절히 조절할 수 있고 비용 측정과 서비스 수요가 급증하는 경우에도 대비가 가능해집니다.
앞서 언급된 내용들을 토대로 하여 제작된 애플리케이션의 손쉬운 배포도 가능해졌는데, 여기서 여러 문제가 발생할 경우에 신속하게 롤백할 수 있게 조정이 가능해서 많은 도움을 줄 수 있기도 합니다. 거기에 기존에 사용되었던 코드도 재사용이 가능하기도 하여 개발자가 처음부터 따로 코드를 작성하지 않고도 새 기능을 생성할 수 있게 도와줍니다.
서비스가 독립적이므로 실패에 대한 애플리케이션의 저항성이 증가하는데, 기존 모놀리식 아키텍처에서는 단일 구성 요소가 실패하는 경우 전체 애플리케이션이 실패하게 될 수 있습니다. 그에 반해 마이크로서비스에서는 기능을 저하시키고 전체 애플리케이션을 충돌시키지 않는 방식으로 전체 서비스 실패를 처리합니다. 즉, 복원성이 높다고 할 수 있겠습니다.
그에 반해 마이크로서비스는 수 많은 장점들에 비해서 단점도 숨어 있었습니다. 그 중 하나가 불분명한 도메인에 있습니다. 이는 더 많은 서비스간의 변경이나 과도한 결합 구성 요소로 이어질 수 있고 일반적으로 단일 모놀리식을 사용하는 것보다도 서비스 전반에 걸친 많은 변경으로 인해 높은 변경 비용이 발생할 수 있기도 합니다. 만약 도메인에 대해 이해하지 않고 시작한다고 하면 많은 문제점을 일으킬 수 있습니다.
이렇게해서 마이크로서비스 아키텍처, MSA에 대한 전반적인 내용들을 다뤄봤습니다. 앞선 단점도 분명 존재하긴 하나 그에 비해 장점들이 왠만해서 커버하고 있기 때문에 이 부분은 크게 신경쓰지 않아도 될 부분이라 생각되지만 이 부분에 민감하다면 좀 그럴 수 있겠다는 생각도 존재합니다.
이번 포스팅 내용이 많은 도움이 되셨기를 바라며, 다음 시간에도 또 다른 정보 가지고 찾아오겠습니다. 감사합니다.
2023.04.27 - [IT] - 데이터 센터란? 종류와 필요성은 어떤 것들이 있을까?
2023.04.26 - [IT] - CRM 플랫폼 마케팅 솔루션 자세히 다뤄봤습니다
'IT' 카테고리의 다른 글
패러렐즈 라이센스 가격 툴박스 자세히 살펴봐요! (0) | 2023.05.02 |
---|---|
윈도우 10 지원 종료 기간 언제인가? (0) | 2023.04.30 |
데이터 센터란? 종류와 필요성은 어떤 것들이 있을까? (0) | 2023.04.27 |
CRM 플랫폼 마케팅 솔루션 자세히 다뤄봤습니다 (0) | 2023.04.26 |
M2M이란? 통신 기기 사물인터넷 차이점은? (0) | 2023.04.25 |
댓글