[기타] 서버리스 by 노마드코더
이 포스팅은 유튜브 채널 노마드코더를 시청하며 중요하다고 생각되는 부분을 제가 기억하기 위해 작성하였습니다.
서버리스란?
서버리스는 애플리케이션을 빌드하고 벡엔드 디자인하는 방법을 바꾸고 있음
벡엔드인데 내가 직접 서버를 관리하지 않는 것
기존에 애플리케이션을 어떻게 배포했냐면 → 직접 서버를 사서 서버의 하드웨어와 소프트웨어를 둘 다 관리했어야 했음(만약 정전이 되면? → 서버 다운, 트래픽이 증가한다? → 메모리 사와서 서버에 꼽아야함)
이러다 아마존(갓)이 등장해 EC2라는걸 선보임 (돈을 내고 아마존이 사용하는 최신식 서버를 빌려서 사용 → 정전이나 각종 사고를 걱정 안해도 되고 돈을 더 내면 스토리지를 늘려줌)
이제는 구글, 아마존, MS의 서버를 돈내고 빌리면 되고 이런 큰 회사들이 서버 하드웨어 부분을 책임지고 관리해주는 시대가 됨
하지만 서버의 소프트웨어는 관리를 직접 해줘야함(하드웨어적인 부분만 빌리는거고 서버 자체는 텅 비어있음 → 업데이트, 보안, 데이터 백업 등 할일이 많음)
서버리스를 활용하면 벡엔드를 서버에 올리는게 아님
서버리스에서는 벡엔드를 작은 함수단으로 쪼개어 내가 직접 관리하지 않는 서버로 올림 ex) AWS lambda
서버리스가 아닌 경우 서버는 24시간 돌아감 (언제나 요청에 응답할 준비를 하고 있음)
반편 서버리스의 경우 내가 업로드한 함수는 잠을 자고 있음 → 리퀘스트가 오는 순간 AWS는 함수를 깨우고 함수는 요청 작업 수행 후 다시 잠에 듦 → 24시간 깨어있지 않아도 되어 비용이 획기적으로 줄어듦
수행한 함수만큼만 돈을 내면 되고 함수가 잠을 잘때는 비용이 발생하지 않음 그리고 스케일 조정을 더 잘할 수 있음 ex) 갑자기 사용자가 늘어난다면 AWS는 같은 함수의 복사본을 만들어 요청을 처리하고 다시 잠에 듦 → 퍼포먼스에도 영향이 없음
- 단점
- cold start : 리퀘스트가 함수를 깨우는데 드는 시간이 존재(그 작은 시간차도 허용되지 않는 경우 부적합) → AWS lambda의 경우 어떤 함수가 자주 쓰이는지 파악해 해당 함수는 잠들지 않고 대기
- 서버 제공자에 너무 의지하게됨 : 예를들어 서버리스 벡엔드를 AWS에 배포했다면 다른 쪽으로 마이그레이팅 하기는 쉽지 않음 (AWS에서 서버를 빌렸다가 구글 클라우드로 이사가는건 쉬움 → 하지만 서버리스에서 이사가는건 그리 간단하지 않음(서버리스로 작업하면 어플리케이션의 구조자체가 바뀜))
그래서 누구에게 서버리스를 추천하는가?
- 사이드프로젝트를 하는 친구들
- 최대한 빠르게 프로토타입을 출시하고 싶은 경우
→ 서버리스로 작업하면 코드에만 집중하면 되기 때문에 (설정은 신경 꺼도 됨)
→ 엄청 빠르고 쉽게 서버를 활용해서 제품을 내놓기 좋음
서버 관리하고 설정하는데 시간을 아끼고 싶다? → 서버리스가 정답임
서버리스의 장점
- 빠르게 제품 출시 가능, 돈도 절약할 수 있음
서버리스의 단점
- 서버에 대한 통제를 잃음, 구조를 변경해줘야함
결론
백엔드를 하는 기존 방법을 대체하진 않겠지만, 풀스택들이 제품을 빠르게 완료하는데 꽤나 매력적인 옵션임
참고할 사이트
SERVERLESS.COM
AWS lambda
Google Cloud Functions
Apex
Terraform 등
댓글남기기