206. 클라이언트-서버 아키텍처 (Client-Server) - 2-Tier 구조 분산 시스템 역할 분담 Thick Client Thin Client 웹 아키텍처 서버 부하 집중

핵심 인사이트: (204번 패턴 연계) 옛날엔 100억짜리 미친 슈퍼컴퓨터(메인프레임) 1대에, 멍청한 모니터와 키보드(더미 터미널) 1,000개를 꽂아서 전 직원이 하나의 뇌에 빨대를 꽂고 일했다(중앙 집중형). 직원이 1명 늘어날 때마다 슈퍼컴퓨터가 끙끙대며 죽어갔다. PC 시대가 터졌다. "야! 각자 책상에 있는 100만 원짜리 컴퓨터(PC) 뇌가 놀고 있잖아! 연산이랑 엑셀 화면 그리는 건 니네 책상 PC(클라이언트) CPU로 각자 1000빵으로 쪼개서 돌려!! 지하 전산실에 있는 대장 컴퓨터(서버)는 그냥 데이터베이스 창고 역할만 하면서 니들이 달라는 엑셀 파일만 쏙쏙 빼서 던져주게 짐을 확 덜어줘라!" 짐을 수천 대의 PC와 한 대의 대장으로 나눈 현대 인터넷의 아버지, 클라이언트-서버 뼈대다.

Ⅰ. 거대 메인프레임(통짜 뇌)의 몰락

  • 과거 (Host-Terminal): 서버가 1부터 100까지(화면 픽셀 그리기, 마우스 커서 움직이기, 연산하기, DB 검색하기) 모든 걸 다 짊어졌습니다. 직원(터미널)은 뇌가 없는 그냥 유리 모니터였습니다.
  • 서버에 부하가 극단적으로 집중되어, 서버가 죽으면 회사 전체가 셧다운 되었습니다.

Ⅱ. 클라이언트-서버 (C/S) 아키텍처의 개념 🌟

  • 개념: 일을 시키며 서비스를 요청하는 **'고객(Client)'**과, 요청을 받아 데이터를 꺼내주거나 무거운 연산을 대신해 주는 '종업원(Server)' 두 개의 독립된 컴포넌트로 역할(관심사)을 완벽하게 찢어버린(2-Tier) 분산 아키텍처입니다.
  • 인터넷 생태계(웹 브라우저 ➜ 웹 서버)를 탄생시킨 가장 위대하고 흔한 아키텍처 패턴입니다.

Ⅲ. 누가 더 많은 짐을 질 것인가? (Fat vs Thin) 🌟 핵심 🌟

클라이언트 PC 성능이 좋아지면서, 계산 짐을 누가 더 짊어질지 두 가지 파벌로 나뉩니다.

1. 씩 클라이언트 (Thick/Fat Client) - "똑똑하고 뚱뚱한 고객"

  • 개념: 클라이언트(내 PC)가 그래픽 화면도 그리고, 핵심 비즈니스 로직(수학 계산, 복잡한 로직)까지 거의 모든 연산을 자기 CPU로 직접 빡세게 다 돌리는 구조입니다. 서버는 바보처럼 가만히 있다가 "DB 저장해 줘!" 하면 데이터만 딸깍 저장(Data 관리)해 줍니다.
  • 예시: 카트라이더 같은 고사양 3D 'PC 설치형 온라인 게임'.
  • 장점: 서버가 너무 편합니다! 1만 명이 접속해도 각자 자기 집 PC 그래픽 카드로 화면을 돌리기 때문에 서버가 터지지 않습니다(서버 부하 최소화). 내 PC 성능이 좋으면 체감 속도가 빛입니다.
  • 단점: 버그가 터지면 1만 명 고객이 일일이 '게임 패치 파일(업데이트)'을 각자 다운받아 자기 PC에 다시 깔아야 하는 지옥이 열립니다(배포 및 유지보수 최악).

2. 씬 클라이언트 (Thin Client) - "가볍고 멍청한 고객" 🌟 웹의 시대 🌟

  • 개념: 클라이언트는 오직 마우스 클릭과 빈 화면(껍데기 UI) 띄우는 짓만 하고, 모든 무거운 비즈니스 로직 연산과 DB 저장은 서버의 거대한 CPU가 모조리 다 해버리는 구조입니다.
  • 예시: 크롬 브라우저로 접속하는 '네이버 웹사이트'나 '구글 독스'.
  • 장단점: 로직이 100% 서버에 있으므로, 버그가 나도 네이버가 자기들 서버 1대만 딱 고치면 전 국민의 화면에서 버그가 동시에 사라집니다(유지보수 짱). 대신 트래픽이 몰리면 연산을 다 해야 하는 서버 CPU가 녹아내립니다.

Ⅳ. 현대의 진화 (N-Tier와 엣지 컴퓨팅)

  • 3-Tier로의 분화: 클라이언트가 서버 1대랑 통신했더니 씬 클라이언트의 서버가 다 터져 죽었습니다. 그래서 서버 딴을 [클라이언트] ➜ [웹 서버(UI)] ➜ [WAS(비즈니스 로직)] ➜ [DB 서버] 처럼 뒤쪽 종업원들을 3명, 4명으로 쪼개는 N-Tier(1066번 MSA 등) 아키텍처로 무한 증식해 나갔습니다.
  • 최근엔 폰(클라이언트) 성능이 아이폰 15처럼 미치도록 좋아져서, 다시 서버의 짐을 폰으로 떠넘기는(온디바이스 AI, 엣지 컴퓨팅) Thick Client로의 회귀가 살짝 유행하고 있습니다.

📢 섹션 요약 비유: 기존 메인프레임 중앙 집중형'미슐랭 3스타 천재 셰프 1명(서버)' 혼자서 홀 서빙, 양파 까기, 고기 굽기, 돈 계산을 다 하는 1인 식당입니다. 손님이 3명만 넘어가도 셰프는 과로사로 쓰러집니다. 이를 분산시킨 클라이언트-서버(C/S) 아키텍처'손님(클라이언트)'과 '주방장(서버)'의 역할 분담 혁명입니다. 여기서 짐을 누가 지느냐에 따라 두 식당으로 나뉩니다. **Thick Client(뚱뚱한 클라이언트)**는 '샤브샤브 고기구이 집'입니다. 주방장(서버)은 그냥 날고기와 버너(데이터)만 테이블에 띡 던져주고 쿨하게 주방으로 갑니다. 손님(내 PC)이 직접 불을 켜고 고기를 굽고 자르고 미친 듯이 요리(연산)를 다 해야 합니다. 주방장은 천 명의 손님이 와도 고기만 던져주면 되니 하나도 안 피곤하지만, 손님은 직접 굽느라 힘듭니다. 반면 **Thin Client(가벼운 클라이언트)**는 '파인다이닝 코스 요리'입니다. 손님(내 크롬 브라우저)은 가만히 앉아서 포크(마우스)만 들고 입만 쩍 벌리고 있으면, 주방장(서버)이 주방에서 썰고 볶고 지지고 다 해서 완벽한 요리(결과 화면)를 입안으로 쏙 넣어줍니다. 손님은 엄청 편하고 앱 업데이트를 할 필요가 없지만, 셰프(서버)는 주방에서 코피를 쏟으며 트래픽 부하와 싸워야 하는 인터넷 통신망의 영원한 역할 분담 저울질입니다.