한국 AWS 사용자 모임(AWSKRUG)의 호스트인 종원님의 권유로 24일에 AWSKRUG의 소모임에 다녀왔습니다. 7시 시작이었는데 조금 늦게 도착해서 급하게 자리잡느라 사진이라도 한 장 남겨놓는 걸 깜빡했네요.

인원은 대략 30명 정도였으며, 역삼역의 AWS Korea사무실에서 진행되었습니다. 이번 소모임에서는 두 명의 발표자가 계셨습니다.

변규현 - “Serverless Framework와 CircleCI를 활용한 NoOps 맛보기”

발표자료 링크

첫 번째 발표는 서버리스 프레임워크와 노드를 사용한 무서버 운영 세션이었습니다. 서버리스로 AWS의 람다와 API게이트웨이를 사용한다는 것만 알고 있었는데, 실 서비스에서도 무리없이 돌아갈 성능을 보여주며(발표자님의 말로는 과한 연산이 필요없는 대부분의 요청이 40ms내외로 처리된다고 합니다) 배포 코드 또한 굉장히 간단했습니다.

발표자분은 serverless를 로컬에서 동작시키고 모든 테스트를 통과하면 배포 환경에서도 똑같이 동작할 것이라고 생각하고 사용하고 있다고 하셨으며, 서버가 죽었는지 살았는지 항상 볼 필요 없이 비즈니스 로직이 정상적으로 짜여 있다면 스케일링에 대해 걱정 할 필요가 없다는 점이 큰 장점이라고 합니다.

서버리스 구성의 단점은 오랫동안 서비스에 호출이 오지 않을 경우 처음으로 함수를 실행할 때 자원을 할당받는 과정인 콜드 스타트(Cold start)가 발생하여 응답시간이 오래 걸리게 되며, 이를 방지하려면 람다에서의 설정에 따라 4~5분마다 한 번씩 요청을 하는 로직을 사용해야 한다고 합니다.

한종원 - “스타트업부터 대기업까지 AWS와 함께한 7년 (오랫동안 쓰면서 경함한, 알게 된 것들)”

발표자료 링크

지금까지 AWS를 쓰면서 좋다고 느낀 기능에 대한 활용과 하지 말아야 할 일들에 대해 말해주셨으며, 아래 4개의 항목으로 나누어 진행되었습니다.

AWS Account

MFA를 반드시 설정하자

보안을 위해 비밀번호와 별개의 PIN과 같은 6자리 숫자를 사용하자고 하셨는데, AWS Secret code를 코드에서 사용시에는 효과가 없으니 절대적인 해결책은 아니라는 의견도 있었습니다.

1사용자 1계정

하나의 계정을 여러 유저들이 사용할 경우, 만든 리소스들의 소유관계가 명확하지 않아서 여러 자원들이 낭비될 수 있으므로 1사용자가 1계정을 사용을 권장하셨습니다.

만약 회사에서 여러 개발자가 여러 계정들을 사용할 때 결제 프로세스가 복잡해진다면, 결제를 담당하는 Paying account를 별도로 두고 해당 계정에 연결된 Linked accounts를 만들어 사용하는 방식을 추천합니다. 다만, 이 경우 연결된 Linked accounts의 각 계정들에 있는 프리티어 사용량이나 크레딧을 소모하는게 불가능하다는 의견도 있었습니다.


VPC

VPC는 가상의 IDC역할을 하므로, 여러 프로젝트를 운영한다면 일단 해당 프로젝트가 사용할 VPC를 만들어 사용하는 것이 좋습니다. 다만 마이크로 아키텍쳐를 지향하며 매 배포마다 VPC를 생성/삭제하는 경우에는 저장해야 할 데이터들의 서비스(S3나 RDS)는 별도의 VPC에 구성해 놓는 것이 VPC를 삭제하다가 데이터를 지우는 실수를 막을 수 있습니다.


Dummy EC2

EC2에 있는 Amazon linux는 따로 로컬에서 실행해 볼 방법이 없습니다. 이 때, EC2에 있는 해당 OS를 이미지로 만들어 컴퓨터로 가져와 Vagrant와 VirtualBox를 사용해 로컬에서 가상머신으로 띄우는 법에 대해 설명하셨습니다. 참가자들 중 한 분이 AWS에서 제공하는 기능으로도 해당 리눅스 이미지를 다운받는 것이 가능하다고 하셨는데, 정확한 방법은 이 발표중에 공유되지는 않았습니다.


Lambda VS EC2 cron job

비동기와 반복 작업에 람다를 쓸 때와, 최소 사양의 EC2를 할당받아 cron job을 실행했을 때의 비용을 비교한 결과, 자주 반복되는 작업일 경우에는 최소 사양의 EC2를 사용하는 쪽이 좀 더 경제적이라고 합니다. 하지만 EC2를 사용했을 때에는 해당 서버의 상태가 정상인지 모니터링을 하는 작업이 추가되기 때문에, SLA(서비스 수준 협약서, Service Level Agreement)를 고려했을 때에는 람다가 더 효율적이라는 의견도 있었습니다.


마치며

AWS로 배포하는 법에 대해 강의에서도 다루고 있는데, 고작 몇 시간의 세션이었음에도 평소 내가 제대로 운영 구조를 짜고 있는지에 대해 고민하는데 큰 도움이 되었습니다. 실제로 한 번도 운영해보지 않은 서버리스 컴퓨팅에 대해서도 알 수 있었던 점도 좋았습니다.

모임의 분위기가 서비스 운영에서 궁금한 점이 있다면 무엇이든 물어보고 답할 수 있는 자유로운 분위기였으며, 한 번 참가해보니 이전 모임부터 나갔으면 더 좋았겠다는 생각이 듭니다.