Skip to content
yona on air
Go back

백엔드와 인프라 생태계

Updated:
Edit page

프론트엔드 영역을 넘어서려니까 새로운 용어들이 너무 많아서 기절할 것 같다. 웹 서비스를 만들기 위해 존재하는 서비스들이 이렇게 많다니. 역할과 구역이 완전히 다르다는 얘기를 못 알아들어서 한번 쭉 정리해보려고 한다. 도대체 어디에 있고 어떤 역할을 하는 건지.

BaaS: 백엔드를 통째로 빌려드립니다

BaaS 자체가 Backend as a Service의 약자였다 (ㅋㅋ) 말 그대로 백엔드 기능을 서비스 형태로 빌려쓰는 거다. 웹 서비스를 만들려면 데이터베이스(DB), 사용자 로그인(인증), 파일 저장소(스토리지) 등 필수적인 백엔드 시스템이 한데, 과거에는 전부 직접 서버 컴퓨터에 설치하고 코드를 짜야 했지만 이제는 BaaS를 통해 이미 완성된 백엔드를 API 형태로 가져다 쓸 수 있다.

(1) Firebase(Google) BaaS의 원조이자 대명사. 특히 채팅처럼 실시간으로 변하는 데이터를 즉각 반영할 때 압도적으로 편리하다. 하지만 NoSQL DB를 사용하기 때문에 복잡한 검색이나 통계를 내는 RDBMS 작업에는 취약하다.

(2) Supabase Firebase의 단점을 극복하기 위해 등장한 강력한 오픈소스. 뼈대 자체가 RDBMS인 PostgreSQL로 이루어져 있어서 복잡한 데이터간 관계나 엑실같은 정교한 표 형태 데이터에 유리하다. 최근 프론트 생태계에서 가장 각광받는 BaaS이기도.

Hosting & Serverless: 프론트엔드 화면 띄워드립니다

코드를 작성했다면 내 웹사이트에 사람들이 접속할 수 있도록 인터넷 공간에 올려두어야 하는데, 이게 바로 호스팅이다.

(1) github pages 정적 호스팅의 대표. html, css, 단순 js파일만 무료로 띄워줌. 서버 쪽에서 데이터를 받아와 실시간으로 화면을 구성해야 하는 복잡한 로직을 처리할 수 없어서 보통 단순한 포폴용으로 사용함.

(2) Vercel Next.js를 만든 회사 소유. Next.js 프로젝트 배포에 가장 적합한 플랫폼. 코드를 깃허브에 올리기만 하면 알아서 빌드하고 배포해줌.

#### 💚 서버리스 (Serverless)

Vercel 같은 플랫폼은 항상 서버리스라는 설명이 따라감. 서버가 없다는 의미는 아니고, 개발자가 직접 서버를 24시간 켜두고 관리할 필요가 없다는 뜻. 평소 서버는 잠들어 있다가 누군가 사이트에 접속하면 클라우드에서 서버가 켜져서 렌더링 해줌. 쓴 만큼만 비용을 지불해서 초기 서비스나 사내망 구축할 때 유지비용을 크게 줄여주는 인프라 아키텍처.

엔진룸(Infrastructure): 직접 통제합니다

서비스가 크게 성장해서 남이 만들어둔 BaaS나 서버리스 환경의 제약이 답답하거나 보안상의 이유로 사내에 직접 서버를 구축할 때 마주하게 된다.

(1) Docker : 내 컴퓨터의 개발 환경을 통째로 컨테이너 박스에 포장 => 어느 운영체재로 가도 똑같은 환경으로 실행 (2) Nginx(엔진엑스): 서버 앞단을 지켜주는 웹 서버&리버스 프록시. 외부에서 쏟아지는 인터넷 요청을 받아서 상황에 맞게 내부 각기 다른 서버로 길을 안내함. 악성 트래픽 차단 + HTTPS 암호화 통신(자물쇠 아이콘!) 처리하는 웹 아키텍처 필수 입장게이트!

나는 지금 Next.js로 화면 + 비즈니스 로직 개발하고 있고 Vercel(서버리스)에 배포할 예정이다. 그래서 서버관리에 시간을 뺏기지는 않는다. Supabase(BaaS)를 연동해서 DB, 스토리지, 인증 기능까지 해결할 계획이다. 이 환경으로 JSON형태의 REST API로 인터넷망에서 데이터를 주고 받게 된다.


Edit page
Share this post on:

Previous Post
AWS EC2 + RDS로 실시간 채팅 앱 배포하기 (1) - 설계
Next Post
[UIUX] Corner Radius와 Squircle