서버리스는 서버가 없다?

오병진·2021년 6월 16일
18
post-thumbnail

🧐 해당 글은 다음과 같은 사람들에게 도움이 됩니다.
1. 배포 하기엔 서버 비용이 부담되는 사람
2. 제품을 빠르게 완성하고 배포하고 싶은 사람

서버리스란?

서버리스에 대한 오해

서버리스는 애플리케이션을 빌드하며, 백엔드를 디자인하는 방법을 바꿔나가고 있습니다.

이러한 서버리스에 대해서 자세히 알지 못하고, 오해하는 사람들이 있을거라 생각됩니다

이름부터가 Server + Less, 말 그대로 서버가 없다
그래서 백엔드에 서버가 없구나..! 이렇게 오해하고는 합니다.

물론 저도 처음엔 그랬어요.. 헿

그렇다면 서버리스가 뭔데??

사실 서버가 없는건 불가능해요. 아무튼간에 코드는 어딘가에 저장되어야 하기 때문이죠

그렇다면 이 서버리스는 서버가 없는 백엔드 라는 뜻이 아닌, 백엔드이지만 직접 서버를 관리하지 않는 경우를 얘기합니다.

하지만 저건 너무 길고 말하기 힘들기에 서버리스라고 부르는게 아닐까 싶네요.

그렇다면 서버는 누가 관리해..??

하드웨어부터 소프트웨어 까지

옛날에는 서버를 직접 구매해서 하드웨어부터 소프트웨어까지 직접 관리해야 했습니다.

거실처럼 넓은 공간에 컴퓨터를 딱 두고
직접 빌드부터 해서 작동시켜야 했습니다.

정전이라도 나면? 바로 웹사이트가 다운되는거고

잘 작동하더라도, 트래픽이 몰리면 메모리와 같은 장비들을 호다닥 뛰어가서 서버에 꼽아야 했던 상황이였던거죠

하드웨어 따위 돈으로 해결해버렸! 🤑

그러다 아마존EC2라는 것을 내놓았습니다.

이 덕분에 직접 하드웨어까지 관리하지않더라도 돈으로 아마존의 최신식 장비와 서버를 빌려 사용할 수 있게되었습니다.

정전이나, 각종 사고를 걱정해도 되지않아도 되고
트래픽이 몰린다 하더라도, 돈으로 해결이 가능해진거죠

이러한 서비스들을 클라우드 시스템으로 부르고, 덕분에 저희들은 구글, 아마존, 마이크로소프트 등의 서버를 돈으로 빌려, 언제 어디서든 서버를 돌릴 수 있게 되었습니다.

소프트웨어도 관리 귀찮앙... 😫

하지만 이렇게 서비스들을 올린다해도, 관리가 매우 귀찮습니다.

업데이트도 하고, 버전관리, 보안, 데이터 백업 등 해야 하는것들이 은근 많아지죠

이를 위해 서버리스가 나타났습니다.

서버리스를 활용하면, 백엔드를 서버에 올리는 것이 아니라

코드를 서버에서 분석하여 함수단위로 쪼갠 이후, 이를 우리가 직접 관리하지않아도 되는 서버에 올립니다.
예를 들면 AWS의 lambda처럼말이죠

그리고 요청이 들어오면, 필요한 함수들만 깨우고 호출하여서 작업을 처리하고
요청이 끝나면 다시 수면을 하게 되는거죠😪

이 덕분에 가격은 엄청 저렴해졌습니다.

예전의 경우, 서버를 24시간 내내 호스팅하기에 돌아가는 시간만큼 돈을 지불했다면



서버리스의 경우 100만건의 요청을 20센트, 즉 1달러도 안되는 가격에 처리가 가능해진거죠

작은 서비스를 띄우더라도 서버를 임대하기에 많이 나갔던 돈에 비하면 많이 저렴해졌죠 ㅠㅠ
요청이 100만은 무슨 1만건도 안넘을거같은 서비스를 월 당 몇만을 사용했다면 상당히 차이가 많이 나는거죠

서버리스의 단점

장점만 있을리는 없겠죠

단점들을 나열해보겠습니다.

  1. 플랫폼에 종속적이다.
  2. 1ms 남짓한 시간이더라도, 호출에 시간이 더 오래 걸린다.

어... 두가지밖에 안떠오르네요
하나씩 알아봅시다

1. 플랫폼에 종속적이다.

이게 뭔 말인가 싶을거에요

사실 기존까지의 서버들은 코드들만 쓱 빼서 다른곳에서 호스팅을 돌리면 됐습니다.
코드는 차피 대부분 깃헙에 있으니까요

하지만 서버리스의 경우, 한 서버에서 다른쪽으로 마이그레이팅, 즉 플랫폼을 옮겨가는 것은 쉽지않은 일이에요
서버에서 서버로 코드를 옮기는 것과는 다르게 간단하지않은 작업인거죠
서버리스로 작업할 경우 어플리케이션의 구조 자체가 바뀌니까 말이죠.

그러기에 플랫폼에 종속적인 것은 두가지의 단점을 야기하게 됩니다.
1. 어플리케이션의 구조가 바뀐다.
2. 서버에 대한 통제를 잃어버린다.

2. 1ms 남짓한 시간이더라도, 호출에 시간이 더 오래 걸린다.

함수 단위로 쪼개어서 필요할 때 호출을 하는 방식이기때문에, 더 오래걸린다.

라는 말인데 좀 어려우니까 풀어볼게요

함수들은 평소에 잠들어있고, 필요할 때 깨워서 이용하기때문에 깨우는 시간이 걸리는거죠
물론 그 시간이 매우 짧기에, 사이드 프로젝트나 토이프로젝트에는 상관이 없는거고요.

사용해보고 판단하자 😎

하지만 기존까지의 패러다임과는 달리하기때문에 처음 하는 것은 어렵겠지만
어떻게 설계하고 작업하는지 익숙해진다면
쿨하고 빠르게 프로젝트 배포가 가능하다고 생각해요.

코드의 품질에 대해서만 집중할 수 있게 되고, 다른 옵션 설정들은 신경을 안써도되니깐 말이죠 :D


해당 내용은
https://www.youtube.com/watch?v=ufLmReluPww
노마드코더의 서버리스 영상을 참고하여 작성하였습니다.
내용들이 부정확하거나, 이상한 점들은 댓글로 피드백 부탁드려요!!
봐주셔서 감사합니다 💖

profile
지나가는 사람입니다. 마저 지나갈게요 :D

12개의 댓글

comment-user-thumbnail
2021년 6월 16일

쉽고 간편하게 잘 설명된 글인 것 같아요!
잘 읽고 갑니다 :)

1개의 답글
comment-user-thumbnail
2021년 6월 16일

백엔드 개발자로써 서버리스가 뭐지? 하는 의문이있었는데 쉽고 간결하게 잘 설명된거같습니다.
감사합니다

1개의 답글
comment-user-thumbnail
2021년 6월 21일

좋은 글 감사합니다. 저도 똑같이 서버리스는 서버가 없다는 건가 생각했던 적이 있었어서, 웃프네요. 이런 글을 빨리 만날 수 있었으면 좋았을 걸 ~ 하는 생각이... 개발 시작한 지 얼마 안 된 친구들에게 공유해야겠어요. 😋

1개의 답글
comment-user-thumbnail
2021년 6월 23일

서버리스뿐 아니라 AWS 람다의 혁신까지 잘 설명된거같습니다
잘읽고갑니다 XD

1개의 답글
comment-user-thumbnail
2021년 6월 24일

저도 사내 기술 공유 시간에 해당 내용을 다룬 적이 있는데 글을 정말 잘 정리하셨네요!

1개의 답글
comment-user-thumbnail
2021년 6월 25일

잘 읽었습니다 :)

1개의 답글