본문 바로가기
개발/AWS

AWS 서버리스 아키텍쳐

by 문둘기 2019. 6. 24.

개인 프로젝트를 진행하면서 AWS ec2와 lightsail을 사용한 적은 있었으나
서버리스 아키텍처는 처음들어봤고, 또 사용해 본 적이 없어서 새로 공부 중이다

서버리스 서비스를 제공하는 곳이 몇 군데 있지만 일단 가장 대중적인 AWS를 이용하기로 했다

공부한 내용을 정리하는 차원에서 글을 쓰기때문에
아직 깊게 공부하지 못했고 오류가 있을 수도 있으니 주의..
잘못된 내용 지적환영합니다

서버리스 아키텍처는 무엇일까?

서버리스(serverless)라는 말만 들어보면 서버가 없는 건가? 하는 생각이 든다
물론 서버가 없으면 서비스를 할수가 없기 때문에 진짜 없는 건 아니고

마치 서버가 없는 것처럼
"너네는 서버 신경 쓰지 마라 내가(AWS) 다 알아서 관리해줄게!!" 이런 느낌이다

왜 나온 것일까?

여기저기 사이트에 잘 설명이 되어있는데 , 요약하자면 점점 편리한것을 추구했기때문이다

예전에는 서버기기를 직접 구매해서 24시간 돌렸다 -> EC2 같은 서비스가 나오면서 편해짐
EC2에 직접 서버 설계,구축 및 관리에 신경썼음 -> 서버리스 아키텍쳐가 나오면서 편해짐
서버관리는 우리가 다 해줄테니 너네는 프로그램 개발, 로직에만 집중해라!!

어떤 장/단점이 있을까?

장점

서버를 구성할 때에는 신경 쓸게 많다 , 대규모 서비스에서의 안정성 및 해킹, 보안 문제 , 유지보수, 관리의 신속성 등등
서버 인프라를 설계하고 구축하는 사람의 경험과 실력이 중요하다, 하지만 이런 것을 AWS가 전부 해결해준다!
서버 관리자를 고용할 필요도 없고 설계하는데 시간을 들일 필요도 없으니
개발기간이 단축되고 비용도 대폭 감소하게 된다

서비스를 하면서 서버 관리 ( 대규모 트래픽, 보안, 성능 튜닝 , 서버 확장 )에 신경 쓰지 않아도 되고
개발자들은 서버 신경 쓰는 대신 핵심 제품에 더 많이 시간을 할애하고 집중할 수 있다
또 , 사용한 만큼만 비용을 낸다 기존 서버들은 24시간 계속해서 가동되기 때문에
사용량이 없어도 서버 유지비용이 계속 드는데 AWS Lambda 같은 것을 이용하게 되면 쓴 만큼만 비용이 청구된다
( 물론 사용량에 따라서 독이 될 수도 있다 ㅎㅎ 잘 검토해서 기존 방식과 비교해봐야 한다 )

단점

특정업체의 서버리스 아키텍처를 이용하는 경우 다른 업체로 옮기기가 까다롭다
ex) AWS 쓰다가 MicrosoftAzure로 옮기기

AWS 자체 문제가 발생하면 조치할 수 있는 게 없다.. AWS가 빨리 해결해주길 기다릴 뿐

실시간 속도가 매우 중요한 환경에는 적합하지 않다 ( 속도가 조금 느리다 )
ex) 오버 워치 같은 실시간 대전 게임, ( 턴제게임 같이 조금 느려도되는건 괜찮다 )

CPU 이용을 아주 오래, 많이 하는 경우에도 적합하지 않다 ( 람다는 현재 , 최대 15분 실행시간 제한이있다 )

어떻게 구성하는 게 좋을까?

자기가 필요한 환경에 따라서 여러 가지 방식으로 구축할 수 있다

여러 가지 AWS 샘플을 볼 수 있는 페이지

샘플 중 하나인 Serverless Blog Web Application Architecture

  • Route 53으로 도메인 구입 및 제공
  • CloudFront는 CDN
  • 정적 콘텐츠는 S3에 저장 후 호스팅
  • Cognito user pools를 이용해 유저 인증
  • 요청은 API Gateway로 받고
  • 처리할 내용은 Lambda 함수에 작성
  • 데이터베이스는 DynamoDB 사용

이런식으로 구성한다

서버리스 웹애플리케이션 예제는 Lambda , API Gateway, S3 , DynamoDB , Cognito 등을 사용해서 웹 애플리케이션을 빌드하는 프로젝트인데, 처음에 감이 안 잡힐 때 천천히 따라 해 보면 이해하는데 많은 도움이 된다. AWS는 공식문서가 잘 나와있어서 시간 날 때 쭉 읽어보면 좋다. 처음에는 뭔소린지 잘모르겠는데 어느정도 이해하고나서 다시 보면 공식문서만한게 없다.

공부하면서 느낀점

그동안 개발할때는 리눅스 서버 하나에 웹서버 데이터베이스 그외등등 설치하고 연동했었는데, serverless는 개념이 너무달라서 혼란스러웠다. 그리고 각각 기능을 가진 AWS의 여러 서비스들을 조립해서 하나의 서버를 구성하는 느낌인데 각각 서비스들을 다 공부해야되는것도 은근히 부담 된다. 하지만 단점보다 장점이 더 큰거같아서 계속 공부해볼예정이다.