ν΄λΌμ΄μΈνΈμ μλ²
ν΄λΌμ΄μΈνΈ-μλ² μν€ν μ³ (2-Tier Architecture)
(μ€μ λ‘ μ‘΄μ¬ν μλ μμ§λ§)μλ²μ μ‘΄μ¬νμ§ μλ μΌνλͺ° μ΄ν리μΌμ΄μ μ΄ μλ€κ³ κ°μ ν΄λ³΄μ. μ΄ μ΄ν리μΌμ΄μ μ μλ²μ ν΅μ νλ κ²μ΄ μλ, μνμ κ°κ²©, μμΈ μ 보, λͺ©λ‘ λ± λͺ¨λ λ°μ΄ν°κ° μ΄ν λ΄μ λ΄μ₯λμ΄ μλ€. μ΄λ° κ²½μ°λΌλ©΄ λμμμ΄ μ λ°μ΄νΈκ° μ§νλμ΄μΌ ν κ²μ΄λ€. μλ‘μ΄ μνμ μ λ°μ΄νΈ ν΄μΌνλ€λ©΄ 1.0 λ²μ λ΄μλ μ μνμ λν μ λ³΄κ° μκΈ° λλ¬Έμ΄λ€.
μ΄λ μν μ 보λ₯Ό μ€μκ°μΌλ‘ μ λ¬νκΈ°μ λ§€μ° μ΄λ ΅κ³ , κ²°μ μμ μν μλ² λ± λ€λ₯Έ κΈμ΅ κ΄λ ¨ν μλ²μ μ°κ³κ° λμ΄μΌ νλ―λ‘ μ¬μ€μ μλ²κ° μμ΄λ μλΉμ€κ° λΆκ°λ₯ νλ€. μ΄μ²λΌ, λΉλ²ν λ°μ΄ν° μ λ°μ΄νΈκ° νμν κ²½μ° λ¦¬μμ€κ° μ‘΄μ¬νλ κ³³κ³Ό 리μμ€λ₯Ό μ¬μ©νλ μ±μ λΆλ¦¬μλ κ²μ΄ μ 리νλ€.
μ΄λ κ² λ¦¬μμ€κ° μ‘΄μ¬νλ κ³³κ³Ό 리μμ€λ₯Ό μ¬μ©νλ μ΄νμ λΆλ¦¬μν¨ κ²μ ν΄λΌμ΄μΈνΈ-μλ² μν€ν μ³, λλ 2ν°μ΄ μν€ν μ³λΌκ³ λΆλ₯Έλ€. 리μμ€λ₯Ό μ¬μ©νλ μ΄ν리μΌμ΄μ μ βν΄λΌμ΄μΈνΈ(Client)β, 리μμ€λ₯Ό μ 곡νλ κ³³μ βμλ²(Server)βμ΄λ€.
λ¨μ΄μ μ΄μμ λ μ¬λ¦¬λ©΄ λ κ΄κ³λ₯Ό μ΄ν΄κ° μ½λ€. 리μμ€κ° νμν κ³ κ°(ν΄λΌμ΄μΈνΈ)λ μλΉνλ μ§μ(μλ²)μκ² μνλ 리μμ€λ₯Ό μμ²νκ³ , μ§μμ κ·Έ 리μμ€λ₯Ό λ΄μ κ³ κ°μκ² μλ΅νλ€. ν΄λΌμ΄μΈνΈμ μλ²λ μμ²κ³Ό μλ΅μ μ£Όκ³ λ°λ κ΄κ³μ΄κ³ , μμ²μ΄ μ νλλ©΄ μλ΅μ΄ μ€λ ꡬ쑰μ΄λ€.
3ν°μ΄ μν€ν μ³ (3-Tier Architecture)
μ¬μ€ μΌλ°μ μΌλ‘ μλ²λ 리μμ€λ₯Ό μ λ¬ν΄μ£Όλ μν μ νκ³ , 리μμ€λ μ μ₯νλ 곡κ°μΈ λ°μ΄ν°λ² μ΄μ€λ₯Ό λ³λλ‘ λ§λ ¨νμ¬ μλ²μ ν΅μ νκ² λλ€. μ΄μ²λΌ ν΄λΌμ΄μΈνΈ-μλ² μν€ν μ³μ λ°μ΄ν°λ² μ΄μ€κ° μΆκ°λ ννλ₯Ό 3ν°μ΄ μν€ν μ²λΌκ³ λΆλ₯Έλ€.
νλ‘ νΈμλμ λ°±μλ
μ΄λ° μν€ν μ³ κ΅¬μ‘°μ λ°λΌ κ°λ° μ§κ΅°μ΄ λλκ² λλ€. ν΄λΌμ΄μΈνΈμ²λΌ μ¬μ©μκ° μ§μ λμΌλ‘ λ³΄κ³ , UIλ₯Ό ν΄λ¦νκ±°λ ν°μΉνλ λ±μ μνΈμμ©μ ν μ μλ μ΄νμ μ£Όλ‘ κ°λ°νλ©΄ νλ‘ νΈμλ κ°λ°μ, μ¬μ©μμ λμ 보μ΄μ§ μμ§λ§ μν μ 보λ₯Ό APIλ‘ λ ΈμΆνλ€κ±°λ λ‘κ·ΈμΈ/λ‘κ·Έμμ, κΆν λ± μ¬μ©μ μΈμ¦μ μ£Όλ‘ λ€λ£¬λ€λ©΄ λ°±μλ κ°λ°μλΌ λΆλ₯Έλ€. λ°±μλλ λ³΄ν΅ λ°μ΄ν°λ² μ΄μ€ λ± μμ€ν μ€κ³κΉμ§ 맑λ κ²½μ°κ° λ§λ€.
ν΄λΌμ΄μΈνΈμ μλ²μ μ’ λ₯
ν΄λΌμ΄μΈνΈλ λ³΄ν΅ μΉ μ¬μ΄νΈ(μΉ μ΄ν), μ€λ§νΈν°/νλΈλ¦Ώ μ© μ΄ν, λ°μ€ν¬νμ© νλ‘κ·Έλ¨(μ΄ν) λ± νλ«νΌμ λ°λΌ ꡬλΆλλ€. μλ²λ νμΌ μλ², μΉ μλ², λ©μΌ μλ², λ°μ΄ν°λ² μ΄μ€ μλ² λ± μλ²κ° νλ μν μ λ°λΌ μ’ λ₯κ° λ¬λΌμ§λ€.
ν΄λΌμ΄μΈνΈ-μλ² ν΅μ κ³Ό API
νλ‘ν μ½
νλ‘ν μ½μ ν΅μ κ·μ½, μ¦ μ½μμ΄λ€. μ΄λ° νλ‘ν μ½μ μμ²ν 리μμ€λ μλ²μ μν μ λ°λΌ λ€μν λ°©λ²μ΄ μ‘΄μ¬νλ©°, 보νΈμ μΌλ‘ λ§μ΄ μ¬μ©νκ² λλ μ£Όμ νλ‘ν μ½μ μλμ κ°λ€.
κ·Έλ¦¬κ³ βν΅μ κ·μ½βμ΄λΌλ μΈ‘λ©΄μμ κ°μμ νλ‘ν μ½μ λ°λΌ μ§μΌμΌ ν κ·μ½μ΄ μ‘΄μ¬νλ€. μ λλ‘ λ ν΅μ μ μν΄μλ νλ‘ν μ½μ λ§λ κ·μ½μ μ§μΌμΌ μ μμ μΈ ν΅μ μ΄ κ°λ₯νλ€.
μΉ μ΄ν리μΌμ΄μ νλ‘ν μ½ : HTTP
μΉ μ΄ν리μΌμ΄μ μν€ν μ³μμλ ν΄λΌμ΄μΈνΈμ μλ²κ° μλ‘ HTTPλΌλ νλ‘ν μ½μ μ΄μ©ν΄ ν΅μ νκ² λλ€. HTTPλ₯Ό μ΄μ©ν΄ μ£Όκ³ λ°λ λ©μΈμ§λ βHTTP λ©μΈμ§βλΌ μΌμ»«λλ€.
API (Application Programming Interface)
μλ²μκ² λ¦¬μμ€λ₯Ό μμ²ν λλ μλ²κ° μꡬνλ μ νν λ°©λ²μ λ§μΆ° μμ²ν΄μΌ νλ€. μ»΄ν¨ν° μΈκ³λ κ²°κ΅ 0κ³Ό 1λ‘ μ΄λ£¨μ΄μ Έ μκ³ , μ ννμ§ μμ μμ²μ μ»΄ν¨ν°κ° μ΄ν΄ν μ μκΈ° λλ¬Έμ΄λ€. κ·Έλ¦¬κ³ μλ²μμ μ¬μ© κ°λ₯ν μμμ΄ νμ λμ΄μΌ μμ²νλ λ°©λ²μ μ νν μ μ μλ€. νμ§λ§ μ°λ¦¬λ μλ²κ° μ΄λ»κ² ꡬμ±λμ΄ μλμ§ μ μ μλ λ°©λ²μ΄ μλ€.
μ νν μμ²μ λ°κΈ° μν΄ μλ²λ ν΄λΌμ΄μΈνΈμκ² λ¦¬μμ€λ₯Ό μ νμ©ν μ μλλ‘ μΈν°νμ΄μ€(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