서버(Server)와 서버리스(Serverless)

서버 해킹, 서버 지연, 서버 다운… 개발자가 아니더라도 ‘서버’는 일상에서 정말 흔히 듣는 용어입니다. 하지만 서버가 뭔지 정확하게 알고 있는 사람은 드물 거예요. 막연히 인터넷 서비스를 제공하는 주체 정도라고 생각하고 있는지도 모릅니다. 그렇다면 정확히 서버가 무엇인지 알아볼까요?

서버(Server)

서버는 간단히 말하자면 ‘컴퓨터’입니다. 현대 사회를 살아가는 많은 사람들은 컴퓨터로 인터넷도 하고, 사진도 저장하고, 글도 저장하는 등 여러가지 일을 합니다. 컴퓨터에는 컴퓨터 간 통신을 가능하게 하는 네트워크 관련 장치, 데이터를 저장하는 저장 장치, 그리고 컴퓨터 연산을 가능하게하는 CPU 등이 있고, 이러한 자원들을 효율적으로 쓰게끔 하는 운영체제도 설치되어 있습니다. 서버 역시 일반 사용자들이 사용하는 PC와 같이 이 모든 것들이 동작하고 있습니다.

단순히 내 컴퓨터가 나를 위한 일을 한다면, 서버는 여러 사용자들을 위한 일을 하게 됩니다. 사용자가 요청한 검색 결과를 제공하고, 메일을 보내고, 게시판에 글을 올리는 일들을 이 컴퓨터들이 하게 되는 것입니다. 영화와 같은 영상 매체에서 무언가 정보를 빼돌리기 위해 몰래 잠입하는 위 이미지와 같은 공간도 이러한 서버들이 잔뜩 들어가있는 곳입니다.

그렇다면 ‘서버 개발’이라는 용어도 많이 들어보셨을 텐데요. 이 때는 컴퓨터를 개발한다는 뜻은 아니고, 웹 서비스 등 특정 기능을 제공하는 프로그램(소프트웨어)을 개발한다는 의미로 사용합니다. 이러한 소프트웨어는 서버실에 있는 컴퓨터에 설치되어 실제 컴퓨터가 사용자들을 위한 기능을 할 수 있도록 동작합니다.

서버의 짝꿍, 클라이언트(Client)

서버에 꼭 따라붙는 클라이언트라는 용어 역시 알아둘 필요가 있습니다. 클라이언트는 서버가 제공하는 서비스에 접근하는 프로그램(ex. 브라우저), 혹은 기기(스마트폰 등) 자체를 의미합니다.

우리가 스마트폰을 통해 구글에 접속할 경우 스마트폰이 바로 클라이언트가 됩니다. PC를 통해 웹 서핑을 할때는 PC가 클라이언트가 되고요. 더 단순하게 말하자면 서버가 제공하는 데이터를 받는 주체를 클라이언트라고 할 수 있습니다.

서버리스 컴퓨팅(Serverless Computing)

그런데 요즘에는 ‘서버리스’로 서비스를 개발할 수 있어 개발자가 굉장히 편리해졌다고 하는데, ‘서버리스’는 대체 뭘까요? 서버가 없이 서비스를 제공할수가 있다니요? 사실 엄밀히 말하자면 서버가 아예 없는 것은 아닙니다. 개발자가 ‘직접 관리해야할 서버가 없다’는 말입니다.

예전에는 서비스를 제공하기 위해서는 물리적인 서버를 마련하고, 관리하는 것이 필수적이었습니다. 저장하고 있는 데이터의 양이 많아져 디스크의 용량을 늘리던지 하려면 부품을 사서 직접 연결해야 했지요. 하지만 AWS(Amazon Web Services)와 같은 ‘클라우드 서비스’의 등장으로 컴퓨터를 직접 구입하고 관리할 필요가 없어졌습니다. 아마존과 구글과 같은 대기업이 서버 역할을 할 컴퓨터를 직접 사들여 안전하게 관리하고, 개발자들은 해당 서버를 비용을 주고 임대하면 되는 것입니다.

이 때 아마존은 임대해준 서버의 하드웨어적인 부분만 관리해주는 것이고, OS 업데이트, 보안패치, 파일 시스템 관리 등 소프트웨어적인 부분은 개발자가 직접 관리해야 합니다. 이마저도 엄청난 많은 일들을 해야하기 때문에 ‘서버리스 아키텍쳐’가 등장하게 됩니다.

서버리스는 서비스가 동작해야할 때, 즉 서버가 필요할 때만 잠깐 서버를 작동시켜 요청한 작업을 수행합니다. 24시간 서버를 임대하는 것이 아니라 필요할 때만 서버를 할당받아 사용하는 것입니다. 이 경우 서버 비용 역시 서버가 동작한만큼만 지불하면 되기 때문에 24시간 서버를 임대하는 것보다 훨씬 저렴한 비용으로 서비스를 운영할 수 있습니다. 또한 서버가 요청이 들어왔을 때 원활하게 서버가 할당될 수 있도록 서버를 제공하는 아마존이나 구글이 직접 하기 때문에 이러한 비용 역시 절감할 수 있습니다.

하지만 서버리스는 24시간 작동하고 있는 서버가 있는 것이 아니므로, 요청이 들어왔을 때 서버를 할당받는 시간(콜드 스타트)가 존재하는 한계가 있기도 합니다. 따라서 서버리스 아키텍쳐는 간단한 서비스를 제공하거나, 사업 초기 서비스의 프로토타입을 테스트하고 싶을 때 추천하는 편입니다.

Leave a Reply

Your email address will not be published. Required fields are marked *