티스토리 뷰

소식이야기

서버리스 아키텍처를 알아 보자

하늘항아리1 2022. 11. 14. 08:18
728x90

이전에 회사 블로그에 제가 올린 글을 여기에 다시 정리해 보려고 합니다. 

아래 내용이 100%제 기준의 생각이란점 이해 부탁해주세요.

 

글 전에

 저는 IT NEWS를 보는 것을 관심 있어합니다.

 그래서 가끔 이슈라고 해서 자주 올라오는 소식을 보면 관심을 가지지 않을 수 없습니다.

 이 기술도 지금은 더 많이 이슈가 되고 실행되고 있는 클라우드의 기술 중에 하나로 같은 서비스를 론칭하는데 비용을 줄일 수 있고 서비스의 크기에 따라서 시스템 운용 볼륨을 줄일 수 있어 좋은 기술입니다.

 바로 '서버리스 아키텍처'입니다.

 

 단순하게 생각하면 서버 시스템이 있는데 서버는 없다는 내용으로 단순히 말을 듣다 보면 이것이 뭔 말인가 싶습니다.

 모르면 어떻게 하죠?  내 찾아보면 되죠, 그래서 찾아보았습니다.

 

 서버리스 아키텍 체어 대해서 검색을 하면 많이 나오는 내용 중에 특정 기업이 많이 나옵니다.

 그중에서 대표 기업이 아마존입니다.

 아마존이 아마 클라우드 서비스는 최고이지 않을까? 생각됩니다.

 

 서버리스 아키텍처를 쉽게 설명하면 이렇습니다.

 은행은 예금, 적금, 환전 등 여러 가지 업무를 담당하는 직원이 있고 우리가 은행에 들어가 내가 원하는 업무를 요청하면 그때마다 은행 직원이 대응을 하는 것이라고 보면 됩니다.

 이렇게 무언가 필요한 고객이 요청할 때마다 대응을 하는 것으로 서비스를 제공하기 위해서 서버와 서버를 관리하는 시스템 또한 구비 서비스를 개발하는 것까지 모두를 다 하는 것이 아닌 필요시에만 딱 서비스를 개발하는 것으로 서비스를 제공하는 입장에선 인프라 비용을 투자하지 않아도 되는 큰 장점이 있습니다.

서버리스를 어떻게 구현할까?

 서버리스를 구현하는 방식으로 말하는 것 중에 FaaS(Function as a Service)와 BaaS(Backend as a Service) 두 가지를 많이 말합니다.

 

 FaaS는 서비스를 제공하는 여러 가지 기능을 함수로 만들어 놓고 서비스를 만들어 제공하려는 고객 입장에서 필요할 때마다 서버의 자원을 할당받아 사용하기에 개발자가 개발해야 하는 기능을 좀 더 유연하게 관리하기에 개발 리소스를 좀더 편하게 관리한다는 측면이 장점입니다.

 대표적으로 AWS Lambad, Google Function 등이 있습니다.

 

 BaaS는 FaaS와 다르게 서버리스 아키텍처 공급자가 제공하는 서비스를 활용하여 구현하는 것으로 주로 인증, 구현이 정형화된 기능(회원관리, 재고관리 등), 데이터 저장 관리 같은 곳에 많이 사용됩니다.

 그러기에 FaaS보다 기능 구현이 간단합니다.

 대표적으로 Google Firebase 등이 있습니다.

서버리스의 장점은 무엇인가?

 개발 업무를 하다 보면 내부적인 요인 및 고객들의 요청 등 외부적인 요인으로 인해서 많은 기능을 빠르게 만들고 테스트를 반복해야 하는 경우가 종종 발생합니다.

 특히 기업의 연구소처럼 많은 아이디어를 바로바로 구현해서 파일럿 애플리케이션을 만들어야 하는 경우라면 충분히 활용해볼 수 있습니다.

 이렇게 시대의 흐름에 맞게 빠르게 개발하고 고객의 반응을 확인할 수 있다면 회사의 경쟁력도 올릴 수 있지 않을까 하는 생각이 듭니다.

 정리하면, 다음과 같은 장점이 있습니다.

 1. 개발 시간을 줄이 수 있어 개발 결과물의 출시를 단축할 수 있다.

 2. 함수 단위로 개발을 하기에 요구 사항에 민감하게 대응하여 서비스 관리에 효율적이다.

 3. 자주 다른 시스템과 연계하는 기능 개발 시 제공하는 것을 기반으로 개발이 가능하다.

서버리스의 단점은?

 그럼 서버리스는 좋은 점만 있을까요?

 그렇지 않습니다.

 모든 설루션, 시스템, 서비스가 그렇듯 맞지 않는 분야나 개발에 오히려 독이 되는 경우도 있기에 자신들이 제공하려고 하는 서비스에 적합한 부분을 잘 도출해서 사용해야 합니다.

 예를 들어 구현한 기능이 너무 자주 요청하는 경우인데 FaaS로 개발이 되었다면 FaaS는 위에 설명한 것처럼 만들어 놓은 함수를 필요 시마다 서버 리소스를 할당하여 사용하는 것인데 빠르게 많은 요청이 들어올 때마다 서버 리소스를 할당한다는 점에서 느리기에 맞지 않습니다.

 또한, 서버리스는 말 그대로 제공하는 기능을 가지고 있는 전용 서버가 없기 때문에 기능을 사용하고 나면 서버 자원을 반납해야 합니다.

 즉, 처리된 결과 및 내용을 매번 저장하는 작업이 별도로 필요합니다.

 1. 처리시간이 긴 작업은 그만큼 리소스를 오래 사용하기에 적합하지 않다.

 2. 요청된 이벤트에 따라 함수를 기동 하기 위한 시간이 필요하다.

 3. 함수 처리 결과를 저장해야 한다.

서버리스에 대한 마무리

 서버리스 아키텍처를 잘 활용하면 새로운 서비스를 만든다든지, 아니면 유지 보수를 좀 더 편하게 할 수 있다는 것에서 활용가치는 있어 보입니다.

 더구나 초기 투자를 확실히 줄일 수 있어 비용적으로도 많은 이점이 있습니다.

따라서, 개발하려는 우리의 서비스가 서버리스와 맞는지?

어떤 기능을 서버리스 방식으로 변경하면 좋을지?

당연하겠지만 많은 검토를 통해서 고민해야 합니다.

2020년 아마존에서 서버리스 아키텍처 패턴 및 모범사례에 대한 영상이 있어 소개합니다.

 

728x90

'소식이야기' 카테고리의 다른 글

경기도 광역버스 입석 금지  (0) 2022.11.18
DTG 운행 파일 뷰어  (0) 2022.11.17
증강현실과 가상현실 기술의 비전  (0) 2022.11.17
DeepFake 기술은 무엇인가  (0) 2022.11.16
실내에서 자동으로 길 찾기  (0) 2022.11.15
반응형
최근에 올라온 글
최근에 달린 댓글