[C811] 마이크로서비스와 서버리스는 어떤 관계가 있나요?
마이크로서비스란, 대용량 분산형 아키텍처로, API를 통해 통신하는 작고 독립적인 서비스의 모임이다. 서비스를 비즈니스 경계에 맞게 세분화하고 서비스 간 통신은 네트워크 호출을 통해 진행하여 확장 가능하고 회복적이며 유연한 어플리케이션을 구성하는 것을 말한다.
독립적인 작은 서비스 단위로 배포 및 업데이트하며 이들은 느슨한 결합(Loosely coupled)으로 연결되어 다른 서비스를 전혀 알지 못해도 내 서비스 코드를 수정할 수 있고 API Gateway가 사용자 또는 마이크로서비스 간 API 통신을 지원하는 것이 특징이다.
또 API로 서비스가 나뉘어져 있어 기존 모놀리틱 설계에 비해 애플리케이션의 모듈성을 유지하기 쉽다.
또한 새로운 기술 스택 도입에도 유리하다. 왜냐하면 서비스를 독립적으로 배포하며 서비스 간 통신은 API로 하기 때문에 가능한 것이다. 결국 key는 API..🤔
그리고 서비스가 작아 관리에 유리하다. IDE(Integrated Development Environment 통합 개발 환경)가 느려지지도 않고 애플리케이션 시동 시간이 짧다. 배포하는 과정이 빠르다. 생산성이 향상된다.
민첩하고 손쉬운 배포 및 업데이트가 가능하다.
(기존 모놀리틱(Monolithic) 방식은 소프트웨어의 모든 구성요소가 한 프로젝트에 합쳐져있어, 큰 변화에 대한 대응이 어려우며, 새로운 기능 추가 및 업데이트에 어려움이 있었다. 여러 역할을 하는 시스템이 하나의 소프트웨어로 집합되어 있어, 특정 부분에 문제가 발생 시, 큰 장애로 이어질 수 있다. 여러 역할을 하는 시스템이 하나의 서버에 함께 올라가있기에, Scale-Out 시 필요 없는 자원이 함께 증가된다.)
서버리스란, 서버가 없는 게 아니라, 서버에 대한 고민을 안하는 것이다. 개발자가 서버를 관리할 필요 없이 애플리케이션을 빌드하고 실행할 수 있도록 한다.
서버리스의 이점으로는 서버관리 불필요, 유연한 확장성, 고가용성, 유휴 용량 없다는 점을 들 수 있다.
서버리스 컴퓨팅의 개념은 2015년 부터 AWS에서 처음 등장하기 시작하였다. 말그대로 serverless, 별도의 서버를 구축할 필요 없이 애플리케이션 개발과 배포를 지원하는 클라우드 컴퓨팅 서비스를 의미한다. AWS는 이 서비스를 lamda라고 정의한다.
서버리스 컴퓨팅은 마이크로서비스 구조의 개발을 구성하기 위해 매우 적합한 형태이다. 여러 함수들을 구성하고 이들을 독립적인 API형태로 구성하여 배포하면 마이크로서비스 형태의 애플리케이션이 될 수 있기 때문이다.
마이크로서비와 서버리스의 관계의 흐름은.. 클라우드 서버로 서비스들을 관리하는게 보편화되고, 점점 증가하면서 독립적인 형태로 서비스들을 관리하는 마이크로서비스 아키텍처를 사용하는데, 각각의 서비스마다 독립되어 구분되어 하나의 큰 애플리케이션을 만드는 MSA는 서버관리에 대한 관리량이 증가하게 되며 이 서버관리를 편의성을 위해 서버리스 아키텍처가 등장하게 되었다.
https://aws.amazon.com/ko/microservices/
https://aws.amazon.com/ko/serverless/
https://www.youtube.com/watch?v=eOBq__h4OJ4
https://www.youtube.com/watch?v=ufLmReluPww
https://cloudmt.co.kr/?p=3774
https://blog.bitsrc.io/aws-serverless-building-blocks-for-microservices-728a6c2ef6e
...이것저것 보기는 열심히 봤는데 조금 낯설고 어렵다.
[C812] 서버리스의 특징 중 하나인 무상태성(Stateless)는 무엇을 의미하나요?
이거 REST API배울때 나왔던 단어인데 아마 마이크로서비스가 API를 통해 통신하기 때문에 이 무상태성이 좀 중요시 되는듯 하다.
무상태성은 해당 시점의 상황이나 상태가 저장되지 않아 다른 상태에서 전에 있었던 상태를 알 수 없는 것으로, 모두 처음부터 시작된다. '사용자나 클라이언트의 컨텍스트를 서버쪽에 유지하지 않겠다.'의 의미같다.