영화 같은 백엔드의 삶
해당 브런치에 남김 글은 초고입니다. 완성된 작품은 해당 "오늘부터 IT를 시작합니다."로 출간하였습니다!!
구매하여서 완성된 글을 종이책의 정감과 편안함으로 읽어보시길 바랍니다^^
감사합니다.!!
http://www.yes24.com/Product/Goods/111417594
'레디~~ 액션!'
'백엔드(Back-end)' PD의 힘찬 목소리가 울려 퍼집니다. 영화 촬영 현장은 많은 사람으로 붐빕니다. 하지만 배우들이 서 있는 연기가 시작되는 곳은 한적합니다. 그렇게 시끄럽던 현장에 PD의 신호 소리와 함께 카메라의 빨간 불빛이 들어오고 이제 배우들이 연기가 시작되고, 언제 그랬냐는 듯이 현장은 조용해집니다. 모두가 숨죽이고 있는 이때 더 바빠지는 사람들이 있습니다. '시나리오 작가', '촬영 감독', '조연출'입니다.
'시나리오 작가'는 '설계자'입니다. 이들은 촬영이 시작되면 꼼꼼히 배우들의 대사를 하나 둘 살펴봅니다. 이들은 대본을 쓰기 위해 영화의 주제와, 등장인물을 구상합니다. 그리고 그 인물들이 포함될 사건을 결정하고 전반적인 시놉시스를 써내려 갑니다. 장면의 특징에 따라 인물의 표정, 동작, 음향, 조명등을 구성하고 주제에 맞게 줄거리를 작성합니다. 그렇게 작성된 대본은 배우들에게 전달되고 그대로 영화 속에 대사가 됩니다.
'촬영 감독'은 조각가입니다. 영화에서 가장 중요한 이미지를 만들어 내는 일을 합니다. 관객을 위한 장면을 고스란히 담아내기 위해 카메라로 가공된 영상들은 조명, 화면 구도, 카메라 기종, 렌즈, 필터, 카메라 위치, 촬영 기법에 따라 전혀 새로운 영상으로 재탄생합니다. 촬영 현장의 수많은 변수들을 대처하고 수정하면서 아름다운 장면들을 만들어 내는 일을 하게 됩니다.
'조연출'은 멀티플레이어입니다. 이들은 감독의 지시에 따라 영화 제작에 전반적인 업무를 수행합니다. 촬영 전에 시나리오를 검토하고, 현장에서는 연기자를 챙기고, 현장의 제작진들을 감독 대행으로 통솔합니다. 촬영 중에 발생하는 카메라, 마이크, 조명, 스텝 등 모든 업무를 지원하고, 촬영 이후에도 편집 등의 마무리 작업을 지원하고, 모든 과정을 감독에게 보고하며, 가장 분주히 움직이고 직접적으로 모든 관계자를 연결시켜주는 역할을 합니다. 그래서 조연출은 언제나 바쁩니다.
그리고 이 모두를 통솔하는 건 바로 백엔드 씨 PD가 하는 일입니다.
백엔드(Back-End)는 웹사이트나 애플리케이션, 솔루션의 프로세스를 운영하는 자원입니다. 애플리케이션 서버(Server), 데이터베이스(DataBase), API 등을 관리하고 실행하는 테크놀로지입니다. 백엔드는 눈에 보이지 않는 서버에서 작용하는 기술을 다룹니다. 백엔드는 사용자가 취하는 행동의 실질적인 부분을 처리합니다. 직접적으로 사용자와 상호작용 하지는 않지만, 클라이언트가 요청하는 모든 명령을 매끄럽게 작동하게 합니다.
백엔드는 우리 눈에 보이지 않습니다. 그래서 개발자가 아닌 일반인에게는 체감하기 어려운 분야입니다. 마치 백조의 발짓처럼 우아하게 떠있는 자태를 뽐내기 위한 물 밑에서 쉴 새 없이 발을 구르는 일입니다. 출근길 커피 한잔을 들고 스마트폰을 꺼내 들고, 오늘의 날씨를 검색합니다. 그리고 검색어를 입력한 즉시 결과는 나오고, 온도와 미세먼지 농도를 체크하고 스마트폰을 끌 때 우리는 쉽고 간편하게 구글의 서비스를 이용했습니다. 그런데 사실은 알고 보면 그 간단한 정보를 제공하기 위해 구글은 30년의 시간을 투자하여 이 서비스를 만들었습니다. 영화를 만들기 위해 수백 명의 사람과 수년의 걸쳐 노력한 결과가 극장에서는 2시간짜리 짧은 영상으로 보이는 것처럼 프런트엔드에 공연되기 위해서 백엔드는 백엔드 PD의 엄청난 노력이 필요로 합니다.
정보를 담고 있는 데이터베이스는 백엔드에서 중요한 역할을 합니다. 영화에서 들을 수 있는 대사처럼 데이터베이스는 직접적으로 사용자에게 정보를 제공합니다. 만약 데이터베이스가 없었더라면 혹은 시나리오 작가가 없었더라면, 애플리케이션은 마치 무성 영화(無聲映畫)처럼 보였을 것입니다. 녹음된 소리도 없고 대사도 없는 영화처럼 사용자에게 맞는 데이터를 보여주는 것이 아닌 동일한 데이터를 보여주는 길거리에 붙어 있는 포스터에 불과하지 않았을 것입니다. 하지만 다행히 데이터를 담을 수 있는 데이터베이스는 존재하고, 대사를 담을 수 있는 녹음 기술이 있기 때문에 우리는 생동감 있는 애플리케이션을 즐길 수 있게 되었습니다.
- 관계형 데이터베이스
관계형 데이터베이스는 1980년대를 지배했습니다. 관계형 데이터베이스의 항목은 열과 행이 있는 테이블 집합으로 구성됩니다. 관계형 데이터베이스 기술은 정형 정보에 액세스 하는 가장 효율적이고 유연한 방법을 제공합니다.
- 객체 지향 데이터베이스
객체 지향 데이터베이스의 정보는 객체 지향 프로그래밍과 마찬가지로 객체 형태로 표현됩니다.
- 분산 데이터베이스
분산 데이터베이스는 서로 다른 사이트에 위치한 둘 이상의 파일로 구성됩니다. 데이터베이스는 물리적으로 동일한 위치에 있는 여러 컴퓨터에 저장되거나 다른 네트워크에 분산될 수 있습니다.
- 데이터 웨어하우스
데이터의 중앙 저장소인 데이터 웨어하우스는 빠른 쿼리 및 분석을 위해 특별히 설계된 데이터베이스 유형입니다.
- NoSQL 데이터베이스
NoSQL 또는 비 관계형 데이터베이스를 사용하면 비정형 및 반정형 데이터를 저장하고 조작할 수 있습니다(반면에 관계형 데이터베이스에서는 데이터베이스에 삽입되는 모든 데이터의 구성 방식을 정의해야 함). 웹 애플리케이션이 보다 보편화되고 복잡해지면서 NoSQL 데이터베이스의 인기가 높아졌습니다.
- 그래프 데이터베이스
그래프 데이터베이스는 엔티티 및 엔티티 간의 관계 측면에서 데이터를 저장합니다.
OLTP 데이터베이스. OLTP 데이터베이스는 여러 사용자가 수행하는 많은 수의 트랜잭션을 위해 설계된 고속 분석 데이터베이스입니다.
2020년 12월 14일 약 45분간 세상이 멈춰버린 사건이 발생했습니다. 바로 구글의 서버 장애가 일어난 것입니다. 구글이 운영하는 지메일, 유튜브, 구글 드라이브, 구글 문서, 구글 캘린더, 구글 플레이에서 서버의 장애로 정상적인 접속이 불가능했습니다. 서버(Server)는 클라이언트에게 네트워크를 통해 정보나 서비스를 제공하는 컴퓨터 시스템으로 컴퓨터 프로그램 또는 장치를 의미합니다. 그렇기 때문에 이 고철덩어리 서버가 없다면 웹사이트는 동작하지 않게 됩니다. 마치 카메라 없이 영화를 촬영하겠다는 말과 다를 게 없습니다. 만약 서버가 없었더라면 영화는 존재하지 않고, 연극으로 뿐이 작품을 감상하지 못했을 거고, 구글과 인스타그램도 존재하지 않았을 것입니다. 하지만 다행히 서버는 존재하고 우리는 이 서버를 통해 전 세계에 연결되어 어떤 정보라도 가져올 수 있는 환경을 즐기고 있습니다.
- 애플리케이션 서버
애플리케이션 서버는 사용자가 원격으로 액세스 할 수 있는 애플리케이션을 호스팅 하거나 배포하는 서버입니다. 우리는 또한 애플리케이션 서버에 웹 페이지를 배치할 수 있습니다. 예를 들어 Apache Tomcat은 응용 프로그램 서버입니다.
- 웹 서버
웹 서버는 웹 페이지만 배포할 수 있지만 애플리케이션을 배포하거나 호스팅 할 수 없는 서버입니다. Apache는 웹 서버, Apache Tomcat은 애플리케이션 서버입니다.
- 프록시 서버
프록시 서버는 클라이언트와 서버의 중간에 위치하는 서버입니다.
클라이언트의 요청에 따라 각 서버에 맞게 라우팅을 해주거나, 어떤 정보 등을 추가해서 서버 혹은 클라이언트에 데이터를 추가, 삭제해서 전달해주는 서버입니다.
- 메일 서버
메일 서버는 전자 메일을 수락하고 원하는 수신자에게 전자 메일을 발송해주는 서버입니다.
- 데이터베이스 서버
데이터베이스 서버는 사용자가 데이터베이스에 연결할 수 있도록 해줍니다. 데이터베이스는 사용자 정보나 사진, 동영상 등에 대한 정보를 담고 있는 서버입니다. 데이터베이스 서버의 종류로는 MySQL, MongoDB, Oracle 등 여러 종류로 또 나뉩니다. 그 밖에도 많은 종류의 서버군이 있지만, 위 5가지가 대표적인 서버의 종류로 볼 수 있습니다
조연출만큼 백엔드에서 바쁘게 살아가는 존재가 있습니다. 바로 애플리케이션 프로그래밍 인터페이스(Application Programming Interface)입니다. API는 백엔드 기술들이 상호작용하는 것을 도와주는 훌륭한 조연출로 볼 수 있습니다. API는 서버와 데이터베이스를 연결합니다. 서버에 접속해서 사용자가 원하는 데이터베이스를 꺼내옵니다. 그리고 그것을 프런트엔드가 사용할 수 있도록 특정한 형식으로 만들어 보여줍니다. 하나의 서비스는 수백 개의 API가 존재합니다. 조연출이 영화의 모든 부분을 관여하고 연결해주는 것처럼 API는 오늘도 프로그램을 동작시키기 위해 모든 열심히 땀 흘리며 뛰어다니고 있습니다.
- private API
private API는 내부 API로, 회사 개발자가 자체 제품과 서비스를 개선하기 위해 내부적으로 발행합니다. 따라서 제삼자에게 노출되지 않습니다.
- public API
public API는 개방형 API로, 모두에게 공개됩니다. 누구나 제한 없이 API를 사용할 수 있는 게 특징입니다.
- partner API
partner API는 기업이 데이터 공유에 동의하는 특정인들만 사용할 수 있습니다. 비즈니스 관계에서 사용되는 편이며, 종종 파트너 회사 간에 소프트웨어를 통합하기 위해 사용됩니다.
프런트엔드의 화면에서 우리가 원하는 정보를 찾기 위해 백엔드 식구들은 오늘도 열심히 뛰어다니고 있습니다. 오늘 당신의 간단한 검색어 하나의 결과 값을 위하여서 당신을 위해 오늘도 구글의 백엔드 PD는
90만 대의 서버와 20억 줄의 소스코드를 실행하였습니다.