개발일지
서버리스 Serverless 란? 본문
서버가 없긴 없는데 진짜 서버가 없다는 뜻은 아님
있기는 하지만 우리 곁에 없는 것뿐!
서버리스는 우리가 직접 관리하지 않는 서버를 의미한다.
원래 서버는 우리 곁에 있었다. 실제 회사마다 사무실에 서버를 구매해서 전원을 꽂고 인터넷을 연결해서 관리했었다.
그러면 무슨 일이 생길까? -> 사무실에 정전이 발생하면.. 누군가 서버의 전원을 뽑으면.. 난리난리 남..
또 서버의 성능이 좋지 않은데 트래픽이 확 증가하게 되면..??
한마디로 예전에는 서버를 전부 수동으로 관리했었다고 한다.
아마존 등장으로 서버는 우리 곁을 떠났다!!!
아마존이 EC2 (Amazon Elastic Compute Cloud) 서비스를 선보였다. 우리가 사무실에서 관리하던 서버를 아마존이 대신 운영해준다는 목적으로 나온 서비스다!!
아마존이 최신 서버를 정전이나 각종 사고 없이 안전하게 제공해주고 관리해주는 서비스
현재 아마존, 구글, 마이크로소프트 등 위와같은 서비스를 제공해주고 있다.
하지만 이런 서비스들은 하드웨어를 제공, 관리해 줄 뿐이고 서버의 소프트웨어 관리는 여전히 우리가 해야한다.
서버의 운영체제 업데이트, 보안 점검, 장애 회복, 시스템 구축, 데이터 백업 등!!
이때 서버리스가 등장하는 것!!!!!
서버리스는 구조가 단순하지 않다.
우선 우리의 서버를 위한 소프트웨어 (백엔드 코드) 를 작은 함수단위로 쪼갠다.
그리고 이 함수를 서버에 올린다.
그리고 이 함수들은 서버에서 항상 깨어있지 않다.
이렇게 되면 비용적인 면에서 큰 장점이 생긴다.
서버는 24시간 요청에 응답할 준비를 해야하지만 서버리스에선 함수들이 잠을 자고있다.
그리고 그 함수가 필요할 때 깨워서 요청한 작업을 수행한다. 그리고 나서 다시 잠이 든다. 이렇게 하면 서버가 항상 응답할 준비를 하고 있는 것은 아니지만 모든 응답에 반응할 수 있다. 그래서 효율성이 높다. 전력을 낭비하지 않을 수 있고 하드웨어를 더 효율적으로 사용할 수 있다.
그리고 서버리스는 우리가 등록한 함수가 실행된 만큼만 돈을 내면 된다.
서버리스의 단점
1. 서버리스의 함수는 잠에서 깰 때 시간이 필요함: 콜드 스타트 cold start
AWS(Amazon Web Service) 가 함수를 깨우려면 시간이 필요하다. 아주 조금이라도!
그래서 24시간 온라인을 제공하는 서버보다 응답 시간이 조금 더 필요하다. 매우 중요한 서비스라면 서버리스는 좋은 선택이 아닐수도..
그래서 때로는 함수 일부를 잠들지 않게도 한다고 한다.
2. 서버 제공자에게 지나치게 의존한다.
우리가 서버리스를 사용하고 있다면 AWS와 결혼한 것과 같음..
그래서 AWS 가 맘에 들지 않는다고 해서 버릴 수는 없다.
서버리스는 편리한 만큼 함수의 형태가 서비스에 딱 맞아 떨어지는 형태여서, 지금 사용하는 서버리스 서비스에서 다른 회사의 서버리스 서비스로 옮기기는 쉽지 않다는 말.
서버관리, 설정에서 시간을 아끼고 싶다면 서버리스 사용하는 것도 나쁘지 않다고 생각한다.
서버리스를 배워보고 싶다면 서버리스 프레임워크 사이트인 serverless.com 이나 AWS람다, Google Cloud Functions, Apex, Terraform 상품을 보는 것도 좋을 것이다.
'잡다한 지식' 카테고리의 다른 글
라이브러리, 프레임워크(library, framework) 차이점 (0) | 2022.11.14 |
---|---|
인터프리트 언어 vs. 컴파일 언어 (0) | 2022.11.13 |
비밀번호 저장하는 방법, 해시함수, salt 솔트값 (0) | 2022.11.09 |
API, REST API 란? (0) | 2022.11.07 |
새로운 프로그래밍 언어 학습하는 방법! (0) | 2022.11.06 |