백엔드가 뭐야
나를 위해 오늘도 열심히 일하는 소중한 일부가 있습니다. 온몸에 피를 흘려보내는데 진심을 다하는 이 친구의 정체는 바로 심장입니다. 심장은 인체가 살아있도록 하는데 결정적인 역할을 합니다. 만약 심장이 없다면 어떻게 될까요? 너무나 당연하게 생명도 없을 것입니다. 그렇다면 심장이 단 0.1초라도 뛰지 않는다면 어떤 현상이 일어날까요? 순천향의대 유병욱 교수는 그의 채널 “닥터유의 건강이야기”에서 말하길 피가 굳어지는 혈전이 발생할 수 있고 이러한 혈전은 뇌경색으로 이어질 수 있다고 합니다. 잠깐의 방심도 허락할 수 없는 매우 중요한 신체 기관입니다. 제가 오늘도 건강하게 코딩을 할 수 있는 것도 쉬지 않고 뛰는 심장 덕분입니다. 이렇게 보이지 않는 곳에서 열심히 일하는 심장은 우리 몸을 이루는 가장 중요한 백엔드 시스템입니다.
그렇다면 웹에서도 심장과 같이 중요한 역할을 하는 백엔드 시스템이 있을까요? 웹을 몸으로 비유한다면 그 심장의 이름은 ‘서버’입니다. 서버와 클라이언트는 암호화된 정보를 주고받으면서 통신을 합니다. 이 과정을 심장박동에 비유하여 “Heartbeat”라고 합니다. 백엔드에서 프런트엔드로 전달하는 통신은 심장이 흘려주는 피로 신체가 작동하는 원리와 비슷합니다. 이렇게 백엔드는 보이지 않는 곳에서 일합니다. 심장처럼 열어야 보이는 ‘안’ 쪽에서 말이죠. 그래서 우린 구글 사이트에 접속해도 서버를 볼 수 없습니다. 하지만 여러분이 구글 개발자가 된다면 열어 볼 수 있을 것입니다.
인체에는 심장뿐만 아니라 각각 고유한 기능을 담당하는 신체 기관들이 있습니다. 대표적인 기관을 선별해 보자면 소화를 돕는 ‘위’, 해로운 물질을 해독하는 '간', 산소를 혈액 속으로 받아주는 '폐' 등이 있습니다. 제가 오늘 코딩을 할 수 있는 것도 이러한 신체를 위한 “백엔드 시스템”이 정상적으로 작동하기 때문입니다. 그렇다면 웹에서는 어떨까요? 웹에서도 서버 말고도 중요한 시스템들이 존재합니다. 데이터를 저장하는 ‘데이터베이스’와 사용자의 요청을 받아 적절한 작업을 수행하고, 그 결과를 사용자에게 반환하는 ‘용용 프로그램’입니다. 이들 역시 백엔드 시스템의 한 부분을 담당합니다. 백엔드 시스템도 서버 외에 이러한 구성 요소가 필요로 합니다.
하지만 인체와 조금 다른 게 있다면 웹의 백엔드 시스템은 서버 외에 구성요소가 빠진다고 하여도 동작이 가능합니다. 즉 신체는 폐가 없는 사람은 숨을 쉴 수 없어 생명을 유지할 수 없지만, 웹에서는 조금 다릅니다. 사용자의 데이터를 저장할 필요가 없다면 데이터베이스 정도는 빼고 시스템을 구성할 수 있습니다. 그리고 복잡한 기능이 필요치 않으면 응용프로그램 없이 간단하게 HTML로 구성이 가능합니다. 하지만 사용자가 원하는 다양한 기능이 필요한 웹 시스템을 위해서는 데이터베이스와 응용프로그램은 꼭 필요로 합니다.
앞서 예시로 배움 백엔드 시스템의 세 가지 구성요소를 비유로 배워봤습니다. 다시 한번 정리하여 복잡하고 난해하던 그들을 조금 더 이해해 보도록 하겠습니다.
집집마다. 컴퓨터 한 대 정도는 가지고 있습니다. 저는 3대나 가지고 있는데요. 그런데 그 컴퓨터가 바로 서버로 변신할 수도 있습니다. 제가 가지고 있는 컴퓨터 한 대를 서버로 사용하기 위해 프로그램을 설치하고 설정을 하면 서버로 변신이 가능합니다. 하지만 이런 일반 컴퓨터로 서버를 사용한다면 동시 접속자가 10명만 돼도 버거워하며 웹사이트와 끊기면서 작업을 수행하지 못하고 결국 완전히 다운돼버릴 것입니다. 그래서 서버에 사용하는 컴퓨터는 보통 서버라는 특별한 목적을 위한 컴퓨터를 사용합니다. 이를 우리는 서버 컴퓨터라고 부릅니다. 그리고 그러한 서버는 메일 서버, 게임 서버등 다양한 종류의 서버로 나뉘기도 합니다. 이렇게 우리가 사용하는 컴퓨터보다 조금 특별한 컴퓨터가 바로 서버입니다.
엑셀은 누구나 쉽게 많은 정보를 저장할 수 있습니다. 고객관리를 위한 목록을 작성할 수 도 있고, 재고관리를 위한 목록도 작성이 가능합니다. 하지만 아쉬운 게 있다면 여러 명의 사용자와 사용하기에는 조금 불편합니다. 만약 다른 사람에게 필요한 정보를 엑셀에 저장하려면 파일을 전송해줘야 합니다. 하지만 엑셀도 발전을 거듭하며 이제는 웹에서 작성이 가능해졌습니다. 더 이상 파일을 전송하고 받지 않아도 온라인에서 실시간으로 저장, 수정, 삭제가 가능합니다. 이러한 일이 가능한 이유는 바로 데이터베이스 덕분입니다. 온라인 엑셀은 파일에 정보를 저장하지 않습니다. 데이터베이스에 저장합니다. 그리고 사용자가 다운로드를 요청할 때 이를 엑셀 파일로 변환합니다. 참으로 영리합니다. 데이터베이스는 이렇게 사용자가 저장하고 싶은 정보를 온라인에서 간편하게 할 수 있게 만들어주었습니다. 좀 더 특별한 엑셀이 바로 데이터베이스입니다.
스마트폰에 날씨 어플을 설치했습니다. 설치되자마자 어플은 열심히 일을 합니다. 오후부터 비가 온다고 알림을 보내오네요. 그리고 오늘의 코디까지 추천해 줍니다. 바람이 많이 부는 날이라고 하니 모자는 피해야겠습니다. 우리가 매일 사용하는 스마트폰과 어플의 관계는 서버와 응용프로그램의 관계를 이해하기 좋은 예시입니다. 여기서 스마트폰은 서버이고 날씨 어플은 응용 프로그램입니다. 날씨 어플처럼 서버에서 설치된 프로그램이 바로 응용프로그램입니다. 서버도 어플이 필요로 합니다. 이러한 프로그램은 Java, Python, Ruby 등과 같은 코딩 언어들로 개발하는 것입니다. 그렇게 개발된 프로그램이 서버에 설치되면 그것이 바로 서버 프로그램입니다. 우리가 사용하는 어플보다 좀 더 큰 프로그램이 바로 서버 응용프로그램입니다.
이처럼 백엔드 시스템은 아주 재밌는 분야입니다. 다양한 지식과 능력이 요구되는 분야입니다. 그리고 제가 느끼는 가장 큰 매력은 보이지 않는다는 매력입니다. 보이지 않는 곳에서 사용자를 위해 서버를 관리하고 프로그램과 데이터베이스를 제공한다는 건 묵묵히 보이지 않게 우릴 위해 힘 흘려주는 부모님과 같다는 생각이 듭니다. 오늘부터 프로그램을 사용할 때마다 저너머에 있는 백엔드 시스템의 매력도 함께 느껴보시기 바랍니다.