5 플랫폼! 기차 기다리는 곳이 플랫폼/5 5 마이크로 서비스
왜 마이크로서비스인가?
마이크로서비스가 무엇이고, 왜 등장했나? 마이크로서비스 하면 넷플릭스가 대표적이고 유명하다.
왜 넷플릭스는 마이크로서비스를 도입했고, 마이크로서비스는 무엇인가?
몇 가지로 재해석해보면 대표적인 이유는 안정성이다.
시스템이 대규모가 되면서 전체 시스템 장애 같은 대규모 장애가 몇번 나면서 이를 어떻게 하면 견고하게 유지할까 를 계속 고민한 것이다.
대표적인 클라우드 업체 아마존도 늘 말하기를 자신들이 시스템이 안될 수 있다는 것을 전제하고 대신 그러한 때 어떻게 유연하게 대체 하는지 fail-over 기능을 잘 구현해 두었다.
결국 시스템(하드웨어 or 인프라)을 믿지 않고, 아키텍쳐 적으로 풀어 본 것이다. 쉽게 말하면 마이크로 서비스는 말그대로 아키텍쳐를 쪼갠 것이다.
거대하고 복잡해지는 서비스의 일부를 모두 쪼개고 그것을 front 부터 db 단까지 한 기능을 위한 시스템을 만들고, 그런식으로 모든 시스템을 따로 만든다.
그렇게 되면 한기능이 안되더라도 다른 기능은 정상적으로 될 수 있다. 확장성도 있다. 그렇게 만들다 보면 서비스를 추가하는 것이 매우 자연스러운 일이고 유연하다.
여기서 중요한 것이 생겼는데, 그럼 그 작은 단위의 시스템간에 어떻게 연결할지이다.
어떤식으로 네트워크를 연결할지 고민 토폴로지라고 하는데, 이것이 중요하다. 방식은 버스형, 트리형, 링형, 성형, 망형 이 중 망형이 가장 안정적이다. 망형은 각 노드를 1:1로 연결하는 구조이다.
위치와 접속 가능 상태를 알아야 함. 상태 정보를 어떻게 알 수 있을까? 어딘가에 저장해두고 그 곳을 바라보면 된다. (비슷한 예, DNS 서버)
그러면 이러한 것을 Distributor 로 정의 서버 자신의 상태 저장해둔다. Distributor의 통신은 TCP가 유리하다. 그리고 Distributor가 종료되는 상황도 고려해야 한다.
그리고 시스템 간 인터페이스 어떤 규약으로 연결할 것인가? 대표적인 REST API 이다.
시스템 간의 연결이 매우 중요하다. 그런데, 복잡하게 하지 않았다. 가장 단순하고 보편적이고 쉬운 REST 방식의 통신이다.
결국 중요한 것은 시스템을 사용하는 흐름과 그 흐름 중에 안될 수 있는 시스템에 대한 방어 로직을 준비하여 Seamless하게 전체 시스템이 잘 동작되게 하는 것이다.
개발자, 기술사, 삼성, 외국계 IT기업 20년차 기술노트 알렉이 직접 작성한 IT기업 기술 면접을 위한 CS + 면접 노하우 PDF <https://kmong.com/self-marketing/539751/LUA54VnQsP> 자주 나오는 CS 질문과 답변 그리고 100번 이상 면접관으로 참여하면서 느꼈던 면접자가 알아야 할 팁 13가지 포함
백엔드 개발자를 위한 클라우드 강의, AWS <https://inf.run/o1NX>
이제는 비전공자도, 일반이도 개발할 수 있다. ChatGPT를 이용한 누구나 앱개발 with 알렉 <https://inf.run/rpX4>
백엔드 직접 번역한 도서 <https://www.yes24.com/Product/Goods/122536127>
IT기술의 거의 모든 것을 다루는 기술노트with알렉 유투브 <https://www.youtube.com/c/%EA%B8%B0%EC%88%A0%EB%85%B8%ED%8A%B8with%EC%95%8C%EB%A0%89>