Front End/Web

μ›Ή μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ 아킀텍쳐

🌐

ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„

ν΄λΌμ΄μ–ΈνŠΈ-μ„œλ²„ 아킀텍쳐 (2-Tier Architecture)

(μ‹€μ œλ‘œ μ‘΄μž¬ν•  μˆ˜λŠ” μ—†μ§€λ§Œ)μ„œλ²„μ™€ μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” μ‡Όν•‘λͺ° μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μžˆλ‹€κ³  κ°€μ •ν•΄λ³΄μž. 이 μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ€ μ„œλ²„μ™€ ν†΅μ‹ ν•˜λŠ” 것이 μ•„λ‹Œ, μƒν’ˆμ˜ 가격, 상세 정보, λͺ©λ‘ λ“± λͺ¨λ“  데이터가 μ–΄ν”Œ 내에 λ‚΄μž₯λ˜μ–΄ μžˆλ‹€. 이런 경우라면 λŠμž„μ—†μ΄ μ—…λ°μ΄νŠΈκ°€ μ§„ν–‰λ˜μ–΄μ•Ό ν•  것이닀. μƒˆλ‘œμš΄ μƒν’ˆμ„ μ—…λ°μ΄νŠΈ ν•΄μ•Όν•œλ‹€λ©΄ 1.0 버전 λ‚΄μ—λŠ” μ‹ μƒν’ˆμ— λŒ€ν•œ 정보가 μ—†κΈ° λ•Œλ¬Έμ΄λ‹€.

μ΄λŠ” μƒν’ˆ 정보λ₯Ό μ‹€μ‹œκ°„μœΌλ‘œ μ „λ‹¬ν•˜κΈ°μ— 맀우 μ–΄λ ΅κ³ , 결제 μ—­μ‹œ 은행 μ„œλ²„ λ“± λ‹€λ₯Έ 금육 κ΄€λ ¨ν•œ μ„œλ²„μ™€ 연계가 λ˜μ–΄μ•Ό ν•˜λ―€λ‘œ 사싀상 μ„œλ²„κ°€ μ—†μ΄λŠ” μ„œλΉ„μŠ€κ°€ λΆˆκ°€λŠ₯ ν•˜λ‹€. 이처럼, λΉˆλ²ˆν•œ 데이터 μ—…λ°μ΄νŠΈκ°€ ν•„μš”ν•œ 경우 λ¦¬μ†ŒμŠ€κ°€ μ‘΄μž¬ν•˜λŠ” κ³³κ³Ό λ¦¬μ†ŒμŠ€λ₯Ό μ‚¬μš©ν•˜λŠ” 앱을 λΆ„λ¦¬μ‹œλŠ” 것이 μœ λ¦¬ν•˜λ‹€.

μ΄λ ‡κ²Œ λ¦¬μ†ŒμŠ€κ°€ μ‘΄μž¬ν•˜λŠ” κ³³κ³Ό λ¦¬μ†ŒμŠ€λ₯Ό μ‚¬μš©ν•˜λŠ” μ–΄ν”Œμ„ λΆ„λ¦¬μ‹œν‚¨ 것을 ν΄λΌμ΄μ–ΈνŠΈ-μ„œλ²„ 아킀텍쳐, λ˜λŠ” 2ν‹°μ–΄ 아킀텍쳐라고 λΆ€λ₯Έλ‹€. λ¦¬μ†ŒμŠ€λ₯Ό μ‚¬μš©ν•˜λŠ” μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ€ β€˜ν΄λΌμ΄μ–ΈνŠΈ(Client)’, λ¦¬μ†ŒμŠ€λ₯Ό μ œκ³΅ν•˜λŠ” 곳은 β€˜μ„œλ²„(Server)’이닀.

λ‹¨μ–΄μ˜ 어원을 λ– μ˜¬λ¦¬λ©΄ 두 관계λ₯Ό 이해가 쉽닀. λ¦¬μ†ŒμŠ€κ°€ ν•„μš”ν•œ 고객(ν΄λΌμ΄μ–ΈνŠΈ)λŠ” μ„œλΉ™ν•˜λŠ” 직원(μ„œλ²„)μ—κ²Œ μ›ν•˜λŠ” λ¦¬μ†ŒμŠ€λ₯Ό μš”μ²­ν•˜κ³ , 직원은 κ·Έ λ¦¬μ†ŒμŠ€λ₯Ό λ‹΄μ•„ κ³ κ°μ—κ²Œ μ‘λ‹΅ν•œλ‹€. ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„λŠ” μš”μ²­κ³Ό 응닡을 μ£Όκ³  λ°›λŠ” 관계이고, μš”μ²­μ΄ μ„ ν–‰λ˜λ©΄ 응닡이 μ˜€λŠ” ꡬ쑰이닀.

3ν‹°μ–΄ 아킀텍쳐 (3-Tier Architecture)

사싀 일반적으둜 μ„œλ²„λŠ” λ¦¬μ†ŒμŠ€λ₯Ό μ „λ‹¬ν•΄μ£ΌλŠ” 역할을 ν•˜κ³ , λ¦¬μ†ŒμŠ€λŠ” μ €μž₯ν•˜λŠ” 곡간인 λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό λ³„λ„λ‘œ λ§ˆλ ¨ν•˜μ—¬ μ„œλ²„μ™€ ν†΅μ‹ ν•˜κ²Œ λœλ‹€. 이처럼 ν΄λΌμ΄μ–ΈνŠΈ-μ„œλ²„ 아킀텍쳐에 λ°μ΄ν„°λ² μ΄μŠ€κ°€ μΆ”κ°€λœ ν˜•νƒœλ₯Ό 3ν‹°μ–΄ μ•„ν‚€ν…μ²˜λΌκ³  λΆ€λ₯Έλ‹€.

ν”„λ‘ νŠΈμ—”λ“œμ™€ λ°±μ—”λ“œ

이런 아킀텍쳐 ꡬ쑰에 따라 개발 직ꡰ이 λ‚˜λ‰˜κ²Œ λœλ‹€. ν΄λΌμ΄μ–ΈνŠΈμ²˜λŸΌ μ‚¬μš©μžκ°€ 직접 눈으둜 보고, UIλ₯Ό ν΄λ¦­ν•˜κ±°λ‚˜ ν„°μΉ˜ν•˜λŠ” λ“±μ˜ μƒν˜Έμž‘μš©μ„ ν•  수 μžˆλŠ” μ–΄ν”Œμ„ 주둜 κ°œλ°œν•˜λ©΄ ν”„λ‘ νŠΈμ—”λ“œ 개발자, μ‚¬μš©μžμ˜ λˆˆμ— 보이진 μ•Šμ§€λ§Œ μƒν’ˆ 정보λ₯Ό API둜 λ…ΈμΆœν•œλ‹€κ±°λ‚˜ 둜그인/λ‘œκ·Έμ•„μ›ƒ, κΆŒν•œ λ“± μ‚¬μš©μž 인증을 주둜 닀룬닀면 λ°±μ—”λ“œ 개발자라 λΆ€λ₯Έλ‹€. λ°±μ—”λ“œλŠ” 보톡 λ°μ΄ν„°λ² μ΄μŠ€ λ“± μ‹œμŠ€ν…œ μ„€κ³„κΉŒμ§€ λ§‘λŠ” κ²½μš°κ°€ λ§Žλ‹€.

ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„μ˜ μ’…λ₯˜

ν΄λΌμ΄μ–ΈνŠΈλŠ” 보톡 μ›Ή μ‚¬μ΄νŠΈ(μ›Ή μ–΄ν”Œ), 슀마트폰/νƒœλΈ”λ¦Ώ 용 μ–΄ν”Œ, λ°μŠ€ν¬νƒ‘μš© ν”„λ‘œκ·Έλž¨(μ–΄ν”Œ) λ“± ν”Œλž«νΌμ— 따라 κ΅¬λΆ„λœλ‹€. μ„œλ²„λŠ” 파일 μ„œλ²„, μ›Ή μ„œλ²„, 메일 μ„œλ²„, λ°μ΄ν„°λ² μ΄μŠ€ μ„œλ²„ λ“± μ„œλ²„κ°€ ν•˜λŠ” 역할에 따라 μ’…λ₯˜κ°€ 달라진닀.

ν΄λΌμ΄μ–ΈνŠΈ-μ„œλ²„ 톡신과 API

ν”„λ‘œν† μ½œ

ν”„λ‘œν† μ½œμ€ 톡신 κ·œμ•½, 즉 약속이닀. 이런 ν”„λ‘œν† μ½œμ€ μš”μ²­ν•  λ¦¬μ†ŒμŠ€λ‚˜ μ„œλ²„μ˜ 역할에 따라 λ‹€μ–‘ν•œ 방법이 μ‘΄μž¬ν•˜λ©°, 보편적으둜 많이 μ‚¬μš©ν•˜κ²Œ λ˜λŠ” μ£Όμš” ν”„λ‘œν† μ½œμ€ μ•„λž˜μ™€ κ°™λ‹€.

OSI 7 Layers에 따라 계측(layer)으둜 κ΅¬λΆ„ν•œ ν”„λ‘œν† μ½œ. OSI 7 LayersλŠ” 컴퓨터 곡학과 λ„€νŠΈμ›Œν¬μ—μ„œ 자주 λ“±μž₯ν•˜λŠ” κ°œλ…μ΄λ©°, 이런 λ„€νŠΈμ›Œν¬ 기초 지식은 λ©΄μ ‘μ—μ„œ μš”κ΅¬ν•˜λŠ” κ²½μš°κ°€ μžˆλ‹€.

그리고 β€˜ν†΅μ‹  κ·œμ•½β€™μ΄λΌλŠ” μΈ‘λ©΄μ—μ„œ 각자의 ν”„λ‘œν† μ½œμ— 따라 μ§€μΌœμ•Ό ν•  κ·œμ•½μ΄ μ‘΄μž¬ν•œλ‹€. μ œλŒ€λ‘œ 된 톡신을 μœ„ν•΄μ„œλŠ” ν”„λ‘œν† μ½œμ— λ§žλŠ” κ·œμ•½μ„ μ§€μΌœμ•Ό 정상적인 톡신이 κ°€λŠ₯ν•˜λ‹€.

μ›Ή μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ ν”„λ‘œν† μ½œ : HTTP

μ›Ή μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ μ•„ν‚€ν…μ³μ—μ„œλŠ” ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„κ°€ μ„œλ‘œ HTTPλΌλŠ” ν”„λ‘œν† μ½œμ„ μ΄μš©ν•΄ ν†΅μ‹ ν•˜κ²Œ λœλ‹€. HTTPλ₯Ό μ΄μš©ν•΄ μ£Όκ³  λ°›λŠ” λ©”μ„Έμ§€λŠ” β€˜HTTP 메세지’라 μΌμ»«λŠ”λ‹€.

API (Application Programming Interface)

μ„œλ²„μ—κ²Œ λ¦¬μ†ŒμŠ€λ₯Ό μš”μ²­ν•  λ•ŒλŠ” μ„œλ²„κ°€ μš”κ΅¬ν•˜λŠ” μ •ν™•ν•œ 방법에 맞좰 μš”μ²­ν•΄μ•Ό ν•œλ‹€. 컴퓨터 μ„Έκ³„λŠ” κ²°κ΅­ 0κ³Ό 1둜 이루어져 있고, μ •ν™•ν•˜μ§€ μ•Šμ€ μš”μ²­μ€ 컴퓨터가 이해할 수 μ—†κΈ° λ•Œλ¬Έμ΄λ‹€. 그리고 μ„œλ²„μ—μ„œ μ‚¬μš© κ°€λŠ₯ν•œ μžμ›μ΄ νŒŒμ•…λ˜μ–΄μ•Ό μš”μ²­ν•˜λŠ” 방법을 μ •ν™•νžˆ μ•Œ 수 μžˆλ‹€. ν•˜μ§€λ§Œ μš°λ¦¬λŠ” μ„œλ²„κ°€ μ–΄λ–»κ²Œ κ΅¬μ„±λ˜μ–΄ μžˆλŠ”μ§€ μ•Œ 수 μžˆλŠ” 방법이 μ—†λ‹€.

μ„œλ²„λŠ” 마치 μ‹λ‹Ήμ—μ„œ λ©”λ‰΄νŒμ„ μ œκ³΅ν•˜λ“―, λ¦¬μ†ŒμŠ€λ₯Ό 잘 ν™œμš©ν•  수 μžˆλŠ” APIλ₯Ό μ œκ³΅ν•΄μ•Ό ν•œλ‹€.

μ •ν™•ν•œ μš”μ²­μ„ λ°›κΈ° μœ„ν•΄ μ„œλ²„λŠ” ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ λ¦¬μ†ŒμŠ€λ₯Ό 잘 ν™œμš©ν•  수 μžˆλ„λ‘ μΈν„°νŽ˜μ΄μŠ€(interface)λ₯Ό μ œκ³΅ν•΄μ•Ό ν•œλ‹€. 이에 λŒ€ν•œ 정닡이 λ°”λ‘œ API이닀. APIλŠ” Application Programming Interface의 μ•½μžμ΄λ©°, Interface의 사전적 μ˜λ―ΈλŠ” β€˜μ˜μ‚¬μ†Œν†΅μ΄ κ°€λŠ₯ν•˜λ„λ‘ λ§Œλ“€μ–΄μ§„ 접점’이닀. 이런 의미λ₯Ό 생각해보면, λ©”λ‰΄νŒλ„ μΈν„°νŽ˜μ΄μŠ€λΌ λ³Ό 수 μžˆλ‹€. λ‹€λ§Œ APIλŠ” μ–΄ν”Œμ΄ μš”μ²­ν•  수 있고 ν”„λ‘œκ·Έλž˜λ° κ°€λŠ₯ν•œ μΈν„°νŽ˜μ΄μŠ€λΌλŠ” 차이점이 μžˆλ‹€.

μ„œλ²„λŠ” APIλ₯Ό ꡬ좕해놓아야 ν΄λΌμ΄μ–ΈνŠΈκ°€ 이λ₯Ό ν™œμš©ν•  수 μžˆλ‹€. 보톡 인터넷에 μžˆλŠ” 데이터λ₯Ό μš”μ²­ν•  λ•ŒλŠ” HTTPλΌλŠ” ν”„λ‘œν† μ½œμ„ μ‚¬μš©ν•΄ μ£Όμ†Œ(URL, URI)λ₯Ό 톡해 μ ‘κ·Όν•  수 있게 λœλ‹€. 이 λ•Œ, ?λ‚˜ &같은 기호λ₯Ό μ‚¬μš©ν•΄ νŒŒλΌλ―Έν„°λ₯Ό μΆ”κ°€ν•˜μ—¬ μš”μ²­μ„ 보낼 μˆ˜λ„ μžˆλ‹€.

HTTP API λ””μžμΈμ„ 잘 ν•˜λŠ” 법

HTTP API λ””μžμΈμ—λŠ” Best Practiceκ°€ μ‘΄μž¬ν•œλ‹€. μ‹€μ œλ‘œ 쓰일 λ²•ν•œ API인 μ‚¬μš©μž 관리 APIλ₯Ό 예제둜 μž‘μ„±ν•œλ‹€.

μœ„μ˜ 예제λ₯Ό 보면 URL λ””μžμΈμ€ λ‹¨μˆœν•˜μ§€λ§Œ λ©”μ„œλ“œλΌλŠ” κ°œλ…μ΄ λ“±μž₯ν•œλ‹€. HTTP μš”μ²­μ—λŠ” λ©”μ„œλ“œλΌλŠ” 것이 μ‘΄μž¬ν•΄μ„œ, λ¦¬μ†ŒμŠ€λ₯Ό λ‹¨μˆœνžˆ λ°›λŠ” 것을 λ„˜μ–΄ λ¦¬μ†ŒμŠ€μ™€ κ΄€λ ¨λœ 행동(CRUD; Create / Read / Update / Delete)을 지정할 수 μžˆλ‹€. 쒋은 레퍼런슀 μ‚¬μ΄νŠΈ

μš”μ²­μ— λ”°λ₯Έ λ©”μ„œλ“œλŠ” λ‹€μŒκ³Ό κ°™μœΌλ©°, 이 λ©”μ„œλ“œλ“€μ„ κΈ°μ–΅ν•΄λ‘μž. 각각 쑰회, μΆ”κ°€, κ°±μ‹ , μ‚­μ œμ™€ κ΄€λ ¨λ˜μ–΄ μžˆλ‹€. μ΄λ•Œ HTTP λ©”μ„œλ“œλŠ” λ¦¬μ†ŒμŠ€λ₯Ό μ΄μš©ν•΄ ν•˜λ €λŠ” 행동에 맞게 μ μ ˆν•˜κ²Œ μ“°μ—¬μ•Ό ν•œλ‹€. GET을 μš”μ²­ν–ˆλŠ”λ° μ„œλ²„μ—μ„œ λ¦¬μ†ŒμŠ€κ°€ μ§€μ›Œμ§„λ‹€λ©΄ 쒋은 API λ””μžμΈμ΄ μ•„λ‹Œ 것이닀.

μš”μ²­μ μ ˆν•œ λ©”μ†Œλ“œ
쑰회 (Read)GET
μΆ”κ°€ (Create)POST
κ°±μ‹  (Update)PUT or PATCH
μ‚­μ œ (Delete)DELETE


Uploaded by N2T