2026년 6월 26일 금요일

[기술조사] 웹앱(Web Applications) 개발을 위한 아키텍처

 웹앱(Web Application, WebApp) 아키텍처


웹앱을 개발하고 확장하기 위해서 코드작성 전, 데이터와 요청이 어떻게 흘러가는지 구조를 설계하는 '소프트웨어 아키텍처'에 대한 이해가 필수적입니다. 

그러나 생각만 하는 것보다, 일단 만들어보는 것이 더 중요한 것 같습니다. 만들고 보완하는 과정에서 아키텍처에 대한 지식을 찾아볼 기회가 있을 것입니다. 


1. 3계층 아키텍처(3-Tier Architecture)
가장 기본이 되는 구조로, 웹앱의 역할을 3가지 계층으로 분리하여 관리합니다. 역할을 분리해야 서로 영향성을 최소화 할 수 있습니다. 

 - 프론트엔드(Presentation Tier) : 사용자가 눈으로 보고 상호작용하는 UI계층입니다. HTML, CSS, JavaScript, React 등

 - 백엔드(Application Tier) : 비지니스 로직(로그인 처리, 데이터 가공, 권한 체크 등)을 담당하는 웹 서버 계층입니다. Node.js, FastAPI, Spritng Boot 등

 - 데이터베이스(Data Tier) : 웹앱의 모든 데이터가 저장되는 부분입니다. PostgreSQL, MySQL, MongoDB 등


2. 서버 구조적 패턴(Structural Patterns)
서비스의 규모와 티므이 크기에 따라 백엔드 서버를 어떻게 구성할지 결정하는 패턴입니다.

 - 모놀리식 아키텍처 (Monolith) : UI, 비지니스 로직, 데이터베이스 접근 코드가 하나의 거대한 프로젝트(단일 코드 베이스)에 통합되어 있는 구조, 개발 초기 속도가 매우 빠르고 배포가 단순, 서비스가 커지면 코드 간의 얽힘이 심해져(스파게티 코드) 작은 수정이 전체 시스템에 오류로 이어질 수 있습니다.

 - 모듈러 모놀리식 (Modular Monolith) : 배포는 하나의 서버로 하되, 서버 내부의 코드는 철저하게 기능별로 독립된 경계를 나누어 개발하는 방식입니다. 현재 가장 가성비 좋고 트렌디한 방식입니다. 

 - 마이크로서비스 아키텍처 (MSA) : 거대한 서비스를 기능별로 쪼개어, 여러 개의 독립적 작은 서버들이 API를 통해 서로 통신하게 만드는 구조. 특정기능에 트래픽이 몰릴 때 그 서버만 개별적으로 늘릴수 있고, 한 서버가 죽어도 다른 서비스는 유지. 서버 간 통신제어, 데이터 동기화 등 관리해야 할 인프로 복잡도와 비용이 급격히 증가합니다. 

 - 서버리스 및 에지 네이티브 (Serverless & Edge-Native) : 개발자가 서버 인프라를 전혀 관리하지 않고 '코드(함수)'만 올려두면, 요청이 올 때마다 클라우드가 알아서 구동하고 트래픽에 맞춰 늘려주는 현대적인 아키텍처입니다. Cloudflare Workers, AWS Lambda 같은 환경입니다. 


3. 아키텍처 적용 로드맵
처음부터 넷플릭스나 구글 같은 마이크로서비스(MSA)를 만들 필요는 전혀 없습니다. 소프트웨어 공학의 대원칙은 "가장 단순한 것부터 시작해, 문제가 생기면 확장하라" 입니다. 

 - 초기단계(1인개발 ~ 소규모) : 모놀리식 또는 모듈러 모놀리식 구조로 빠르게 MVP(최소 기능 제품)를 만듭니다. 

 - 트래픽 성장기 : 사용자가 많아지면 무거운 기능들을 하나씩 서버리스(Workers) 환경으로 분리해 나가며 아키텍처를 점진적으로 진화시키는 것이 정석입니다. 


댓글 없음:

댓글 쓰기