본문 바로가기

IT Note/Software

Serverless 101 (부제: 새해에 서버리스 찍.먹.해보기)

 안녕하세요! 처음 인사드립니다! Just do IT에 22년도부터 처음 합류한 에디터 크리링입니다! :) 

(저는 IT업계 입성한 갓 4년차인 주니어이고 영업직무이다 보니, 오류투성이에 전문성이 떨어 질 수 도 있다는 점 많은 양해 부탁드립니다… 많은 지적과 응원은 언제나 환영입니다!) 

 

 제가 첫 주제를 서버리스(Serverless)로 선정한 이유는 최근에 많은 스타트업에서 클라우드를 넘어서 서버를 직접 관리하지 않는 서버리스 시대에 돌입하고 있습니다. 

AWS의 대표적인 Serverless Service : Lambda

그렇다면 과연? 서버리스(Serverless 이하 서버리스)란 무엇이고? 왜 서버리스란 개념이 생겨 났을까요? 

 

이렇게 새로운 개념이 생겨 나고, 22년도 새로운 호랑이 해를 맞아 서버리스라는 주제로 어디가서 아.는.척해보자는 의미로 찍.먹. 수준으로 키보드를 두드리게 되었습니다! 

 

본격적으로, 서버리스를 찍어 먹어보기 전! 최근 IT 인프라의 흐름을 짤막하게 살펴볼까요? 

 

*재밌는 사실! AWS 사용자의 50% 이상의 사용자가 서버리스를 도입하고 있다는 사실? 

 

컴퓨터 가상화 기술이 점차 발전하면서 베어메탈(일명, 깡통서버라고하죠?)에서 Virtual Machine로 쪼개고, Cloud EC2까지 물리서버에서 가상서버로 옮겨졌지만, 여전히 기업 내의 인프라를 담당하는 엔지니어분들은 서버의 하드웨어와 소프트웨어 둘 다 관리를 해야합니다.

(깡통서버를 쓰던 시절이나, 클라우드 서버를 쓰고 있는 현재나 웹사이트의 트래픽이 증가하고… 유저가 막 들어오면.. 겁나 뛰어가서 랙에 메모리를 막 꼽던가.. EC2 메모리 리소스를 막 늘리던가..)

 

아무리 AWS,Azure,GCP와 같은 날고긴다하는 클라우드 밴더라도 고객사 서비스의 어플리케이션/소프트웨어의 업데이트,보안이나 백업 등 같은 부분까지는 관리해 줄 수 가 없습니다. 

 

어떠신가요? 감이 잡히시나요? 

클라우드! 클라우드! 클라우드! 만능일 것 같은 클라우드에도 불편한 점이 보이지 않나요?

 

이러한 IT 업계 동향은 채용공고에도 반영이 되어있습니다! 

 

과거와 달리 최근에는 이러한 IT 역량이 필요로 하는 인재들을 계속 요구하고 있습니다. 서버 운영이 가능한 개발자, 개발 가능한 서버 엔지니어, Devops 엔지니어, SRE 엔지니어, 클라우드 엔지니어….

 

여러가지 이유도 많겠지만(조직문화가 Agile하게 변하면서 Devops Culture와 MSA,K8S 도입과 같이..) 

 

제 생각에는 현대 클라우드 환경에서는 컴퓨팅 유닛이 실시간,다이나믹하게 변하고, Manual하게 Auto Scaling을 해야하다 보니 기존의 개별 하드웨어 엔지니어/소프트웨어 스킬만으로는 클라우드 환경에서 일어나는 트러블슈팅을 해결하기에는 너무 많은 시간이 걸리고, 해결할 수가 없다는 거죠.. (서버 개념도 알아야하고.. 소프트웨어 개념도 알아야 하니..) 

 

그럼.. 많은 고갱님들 입장에서는 이런 니즈가 생기지 않겠습니까?

 

아.. Cloud 참 좋은데.. 오토스케일링하면 편하고, 서버 굳이 안사서되서 참말로 좋은데..

근데.. 인프라 구축할때랑, 오토스케일링할 때 마다 조마조마 해 미쳐버리겠네…서비스 모니터링해야하고 개발도 해야하는데.. 개발팀/운영팀 다 어디갔어..  사람 손 참 많이 타고.. 이거 할 수 있는 사람 얼마 없고.. 

 

정리하자면, 고갱님 입장에서 클라우드 서버 관리 및 운영 측면에서도 안정성(Reliability)의 중요성의 굉장히 커졌습니다. 그러면서 Site Reliability Engineer(A.K.A SRE)라는 새로운 Role을 가진 IT Position도 최근에 등장하게 되었죠? 

 

단순하게 생각해봅시다.. 않이.. 클라우드 벤더에서 그냥.. 하드웨어,소프트웨어까지 다 관리해주면 안되나? 그거 어려워? 해줘! 해줘! 그렇게 탄생했습니다..

 

자…. 여기까지 서버리스의 탄생에 대한 빌드업을 했습니다.. 

서버리스는 단순하게 말하면 백엔드를 아주 작은 함수로 쪼개서 클라우드 서버로 올려버립니다. 가장 중요한 사실은 백엔드를 함수단위로 쪼개서! 클라우드 서버로 올려버린다!입니다. 즉 클라우드서버에 백엔드의 소스코드가 있기 때문에 고갱님은 서버관리에서 해방되게 됩니다!!

 

자자!! 여기서 FaaS의 개념의 또 aaS의 개념이 생겨납니다!(두둥)

 

IDC(물리적 서버)> laaS >PaaS>SaaS 이거에 관련된 글은 우리 호롤리 에디터 설명 글이 많습니다. 

 

FaaS(Function as a Service) : Faas는 고객이 인프라를 구축하고 유지하지 않고도 애플리케이션 기능을 개발, 실행, 관리할 수 있도록 하는 클라우드 컴퓨팅의 한 범주이다.(사전적 정의)

 

VM vs Serverless

VM(IDC와 EC2 전부 포함)에서 인프라, OS, WAS, WEB에 대한 개별적인 관리가 필요합니다. 

하지만 Serverless 환경에서는 VM조차 관리하지 않습니다. 소스만 함수단위로 클라우드 서버에 올리면 Cloud Vendor에서 알아서 관리해줍니다. 

 

즉, 우리가 관리해야 할 서버는 없다! 굉장히 큰 장점이죠? 

 

좀 더 자세히 말하자면, 인스턴스(서버)에 대한 스케일링 업/아웃을 인프라 담당자가 관리할 필요가 없어지는 거죠!

 

FaaS는 어떻게 동작할까요? 

 

[Software Engineer가 Login Function을 FaaS를 활용하는 예] 

  1. 요구사항에 따라 로그인 코드를 짠다.
  2. AWS Lambda에 로그인 코드를 업로드 한다.
  3. App 사용자는 로그인 버튼을 클릭할 때 마다 자동으로 AWS Lambda 함수가 호출되어진다.
  4. App 사용자가 급증한다! 함수를 복사해서 호출을 늘려주면 끝
 
 

여기서 가장 중요한 특징이 알아채셨나요? Request가 발생 할 때 서버에서 Response한다! 

서버 입장에서는 24/7 가동 될 필요가 없습니다. 

이 방식이 비용에서도 기존 클라우드와 다른 방식으로 산정이 됩니다. 

 

이 방식 때문에 더 디테일하게 스케일과 비용을 조정할 수 있습니다. 

 

      Serverless : CPU사용량으로 비용 측정

(ex. AWS Lambda의 경우 1M 함수 요청 당 $0.2 다를수도있음 참고만)

      VM(Instance) : 서버 운영시간에 따라 비용 측정 

 

서버리스 서비스는 클라우드 서비스(CSP) 삼대장 모두가 제공하고 있습니다!

AWS Lambda, MS Azure Functions,Google Functions

모두 가격이 다르고, 특장점이 있으니 알아보고 선택하세요.. 

 

여기까지만 읽어보신다면, 서버리스 완전 갓갓 짱짱맨 아니야? 라고 하실 텐데, 물론 저도 그렇게 생각했습니다만 분명한 장/단점이 있는 서비스입니다. 

 

첫번째 단점은 Cold start 문제라고 하죠? 아무래도, 24시간 계속 작동되어 대기하고 있는 기존 서버와 달리 요청이 올 때 까지 기다리고 있어야 하다보니 찰나의 Latency가 있습니다. 혹자는 찰나가 아니라 어마무시한 지연이 있다고도 합니다.

 

두번째 단점은 벤더와 코드 종속성의 문제입니다. IT 기업의 최대 자산은 코드 아니겠습니까? 그 모든 백엔드가 한 클라우드 벤더에 종속 되어 있다보니, 추후 아키텍처를 확장하거나 혹은 마이그레이션 할 때 굉장히 큰 이슈가 발생 할 수 도 있습니다.(단순히 서버 이관의 문제가 아니라, 인프라 아키텍처가 클라우드 벤더에 속해있다보니.. 동거 후 별거와 결혼과 이혼은 다른 거처럼.. 적절한 비유려나..)

 

장점과 단점을 다시 정리하자면! 

 

[장점 1] 서버 관리 할 필요가 없다.

[장점 2] 효율적인 인프라 스케일/비용 관리 

[장점 3] 개발에 집중! 더 빠른 GTM!

 

[단점 1] 높은 Latency/Cold Start/느려짐 문제

[단점 2] 벤더&코드 종속성 문제   

 

어떤분들이 어떻게 의사 결정을 해야할까? 

 

최근에 대기업의 CVC 투자부터 개인 개발자의 사이드프로젝트까지 굉장히 많은 분들께서 재밌는 서비스를 많이 시도해보고 계십니다. 또, 정식 시리즈 투자를 받기 전의 스타트업에 종사하시는 분들께서도 서버리스로 프로토타입을 구축해보고, 서비스 런칭해보는 것도 좋은 전략이 아닐까 합니다..(철저히 제 의견입니다..) 

 

어느정도 MAU가 확보되고, 서비스 확장이 필요할 때가 된다면 서버리스에서 벗어나서 조금 더 안정성 있는 방향으로 아키텍처를 다시 구축하고 고도화하는게 필수 인 것 같습니다.

 

서버리스 101에 대한 내용은 여기 까지입니다!

 

끝으로, 서버리스를 주제로 올 해의 첫 글을 써보았습니다. 어떠셨나요? 부족함도 많고, 어색한 부분도 많은 것 같습니다. 나름 제가 이해한 내용을 저만의 글로 써보았는데, 제 생각을 정리하고, 글로 써내려가는게 쉽지 많은 않네요.ㅎㅎ

 

끝까지 읽어 주셔서 감사합니다. :) 

 

새해복 많이 받으세요!

 

[참고하면 좋은 영상 : 이 영상만 보셔도 서버 클라우드 IT 인프라 흐름이 보입니다. 클라우드 서버 서버리스 serverless ]

[참고하면 좋은 영상 : 서버리스는 서버가 없는걸까? 8분 개념 설명!]

 

 

[참고하면 좋은 영상 : 서버리스 컴퓨팅 기존 시스템과 결정적인 차이점이 있습니다!]

 

반응형