최근 디지탈 트랜스포메이션과 같은 새로운 변화에 대한 리즈가 굉장히 많이 생겨나면서 마이크로서비스 아키텍처에 대해 많은 관심을 갖고 있습니다.
현재 많은 기업들에서 애플리케이션을 개발할 때 개발자들이 하나의 소스 Repository 와 하나의 데이터베이스로 하나의 애플리케이션을 개발합니다.
이러한 방식은 시간이 흘러 유저가 많이 늘어나고, 회사의 규모가 커지면서, 운영하는 서비스(사이트)가 늘어나게되면 문제가 발생됩니다.
하나의 소스 코드와 개발 배포 단계를 모든 개발자들이 달라붙어서 개발과 소스 배포에 집중을 하게됩니다.
이렇게되면 결국 개발속도가 느려지고 운영에 많은 어려움이 발생됩니다.
예를들어 CSS 하나 수정을 했는데 모든 소스를 빌드하고 배포를 해야 하고, 빌드과정에서 문제가 발생되면 다시 롤백을 해야하는 비효율적인 방식으로 서비스 개발을 하게 됩니다.
이런 방식을 Monolith라고 합니다.
또한 Monolith의 문제점은 새로운 기술 도입이 어렵습니다.
예를들어 최신의 기술을 도입하기위해서 파이썬은 머신러닝 라이브러리가 많고 비동기 처리는 Node.js쓰고 프론트엔드는 npm을 사용하면 쉽고 빠르게 개발이 가능합니다.
하지만 Monolith으로 구성된 시스템이라면 이런 새로운 기술을 도입하여 개발을 하는데 많은 어려운 구조를 가지게 됩니다.
예를들어 새로운 npm라이브러리하나 추가하여 배포하면 웹서버가 죽어버리는 경우가 발생할 수 있기 때문입니다.
이런 문제로 개발자들의 창의성을 막고, 새로운 기술을 빨리 도입하지 못하게 되면서 기업들은 빠르게 혁신을 하지 못하게 되는 문제가 발생됩니다.
요즘같은 시대에서 빨리 움직이고 빨리 변화해야하는 시대에 맞지 않는 방식이고, 굉장히 혁신에 저해가되고 고객은 서비스 불만족하게 됩니다.
그래서 많은 기업들은 마이크로서비스로 바꾸고 있습니다.
영상에서 마이크로 서비스를 도입하여 운영하는 회사로 넷플릭스를 이야기 합니다.
adrian cockcroft (Cloud Native Architecture at Netflix)가 정의한 마이크로서비스는
SOA(Service-oriented architecture) 서비스들이 서로 통신을 하고 이 서비스들이 서로 각자에게 영향을 주지 않고 운영될 수 있어야 합니다.
그리고 마지막으로 각각의 서비스는 하나의 비즈니스 로직을 가지고 있습니다. 그래서 다른 서비스의 비즈니스로직을 몰라도 독자적으로 운영될 수 있습니다.
이런 내용이 충족이 되면 마이크로 서비스 아키텍처 구성을 했다고 볼 수 있습니다.
마이크로 서비스의 장점으로는 각각의 서비스별로 쪼게져 작아진 시스템을 운영하게되면 장점들이 많이 있습니다.
서비스확장도 쉬워지고, 각각의 서비스들이 서로의 디펜더시 없이 개발할 수 있고, 어떤 새로운 기능이 있을때 전체 서비스 인팩 없이 서비스를 적용할 수 있습니다.
또 문제가 발생 했을시 전체 서비스 영향을 주는게 아니라 해당하는 부분만 고쳐서 적용할 수 있는 큰 장점이 있습니다.
다양한 언어로 개발을 하더라도 서로 API를 통해 스탠다드한 어떤 형식에 맞춰 어떤 기능들을 만들어서 서로간에 데이터를 주고 받을 때 전혀 문제없이 통신할 수 있습니다.
마이크로서비스 아키텍처에선 여러 이벤트를 전달할 수 있는 큐서비스, 노티피케이션서비스를 이용하여 쉽고 빠르게 이벤트를 주고 받을 수 있도록 만들고 이런 API를 통해 빠르게 개발할 수 있는게 클라우드의 장점입니다.
'Work' 카테고리의 다른 글
스마트 스토어의 시작과 각종 팁 정리 (0) | 2023.04.04 |
---|---|
듀얼쇼크4 드라이버 오류 해결방법(유선패드) (0) | 2023.04.04 |
웹프로그래밍용 APM 설치 순서 (0) | 2023.04.04 |
(FLUTTER) Ai 반실사 앱 : Ai_Pict 출시 (0) | 2023.04.04 |
CentOS 7.9에서 python3.10이상 설치 (0) | 2023.04.04 |