API vs Library vs Framework
μλ‘
APIμ λΌμ΄λΈλ¬λ¦¬, κ·Έλ¦¬κ³ νλ μμν¬ μΈ λ¨μ΄μ μ°¨μ΄μ μ λν΄μ λ¨Έλ¦ΏμμΌλ‘λ μ½κ² λ μ€λ₯΄μ§λ§ λ§μ μ νν μ°¨μ΄κ° λλκ³ λ¬Όμ΄λ³΄λ©΄ λ Όλ¦¬μ μΌλ‘ μ€λͺ νκΈ°κ° νλλλ€. κ·Έλμ μ΄λ² κΈ°νμ κΈμ μ 리ν¨μΌλ‘μ¨ νλ² λ¨λ¨ν κ°λ μ μ‘κ³ μ ν©λλ€.
λͺ©μ°¨
1. APIλ?
2. λΌμ΄λΈλ¬λ¦¬λ?
3. νλ μμν¬λ?
4. APIμ λΌμ΄λΈλ¬λ¦¬μ μ°¨μ΄
5. λΌμ΄λΈλ¬λ¦¬μ νλ μμν¬μ μ°¨μ΄
API(Application Programming Interface)
API(Application Programming Interface)λ μμ© νλ‘κ·Έλ¨μμ μ¬μ©ν μ μλλ‘, μ΄μ체μ λ νλ‘κ·Έλλ° μΈμ΄κ° μ 곡νλ κΈ°λ₯μ μ μ΄ν μ μκ² λ§λ μΈν°νμ΄μ€λ₯Ό λ»ν©λλ€. - μν€λ°±κ³Ό
μ½κ² μμλ₯Ό λ€μ΄μ μ€λͺ νλ©΄ APIλ λ μ€ν λμ 'μ μ'μ λλ€.
λ μ€ν λμμ μλμκ² μ£Όλ¬Έ κ°λ₯ν(μ ν κ°λ₯ν) λ©λ΄λ₯Ό 보μ¬μ£Όκ³ μλμ΄ κ³ λ₯Έ μμμ μ£Όλ°©μ μ λ¬ ν, μμμ΄ λμ€λ©΄ κ³ κ°μκ² μ λ¬νλ 'μ μ'μ΄ APIμ λλ€.
νμ¬ κΈμ΅, μμ , μ μ μκ±°λ, λ± κΈ°ν μ¬λ¬ μ μ’ μ μν μλ°± κ°μ APIκ° μμΌλ©° μ ν리μΌμ΄μ μμ μννλ λͺ¨λ μμ μ λ¬Όλ‘ λ€λ₯Έ μ ν리μΌμ΄μ κ³Ό ν¨κ» μννλλ‘ μ ν리μΌμ΄μ μ νλ‘κ·Έλλ°νλ μμ λ ν¬ν¨νκ³ μμ΅λλ€. open APIλ κ°λ°μλΌλ©΄ λꡬλ μ¬μ©ν μ μλλ‘ κ³΅κ°λ APIλ₯Ό λ§ν©λλ€. μλμ κ΅¬κΈ λ§΅, μμ λ‘κ·ΈμΈ(λ€μ΄λ², μΉ΄μΉ΄μ€, νμ΄μ€λΆ λ±)μ΄ openAPIμ λνμ μΈ μλΌκ³ ν μ μμ΅λλ€.
νΉμ§
APIλ νμν λΆλΆμ μμ²νμ¬ μλ΅λ°λ μλΉμ€ κ°μ λ€λ¦¬μ κ°μ μν μ νλ€.
- ꡬνκ³Ό λ 립μ μΌλ‘ μ¬μλ§ μ μλμ΄ μλ€.
- APIμ λ°λΌ μ κ·Ό κΆνμ΄ νμν μ μλ€.
- λ§ κ·Έλλ μΈν°νμ΄μ€μ΄κΈ°μ μμλ 무μμ΄ λ€μ΄μλμ§ μ μ μλ€.
λΌμ΄λΈλ¬λ¦¬(Libary)
λΌμ΄λΈλ¬λ¦¬(Libary)λ μμ© νλ‘κ·Έλ¨ κ°λ°μ μν΄ νμν κΈ°λ₯(ν¨μ)μ λͺ¨μ λμ μννΈμ¨μ΄μ λλ€. κ΅¬μ± λ°μ΄ν°, λ¬Έμ, λμλ§ μλ£, λ©μμ§ ν, 미리 μμ±λ μ½λ, μλΈλ£¨ν΄(ν¨μ), ν΄λμ€, κ°, μλ£ν λ±μ΄ ν¬ν¨λ μ μμ΅λλ€.
μ¦, νλ‘κ·Έλ¨ μ μ μ νμν κΈ°λ₯μ΄λΌκ³ ν μ μμΌλ©°, μλμ°¨ λ°ν΄, μλμ°¨ ν€λλΌμ΄νΈ, μλμ°¨ μμ΄λ°± λ±μ μλ‘ λ€ μ μμ΅λλ€.
μ¬μ© μ¬λΆλ μ½λ μμ±μ μ ν μ¬νμ΄λ©°, μλ‘μ΄ λΌμ΄λΈλ¬λ¦¬ μ μ μμλ μ격ν κ·μΉμ΄ μ‘΄μ¬νμ§ μκΈ°μ μ μ μλμ λ§κ² μμ±λ§ νλ©΄ λ©λλ€.
νΉμ§
- λ 립μ±μ κ°μ§λ€.
- μμ© νλ‘κ·Έλ¨μ΄ λ₯λμ (νμν λ)μΌλ‘ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νλ€.
- Apache Commons, Guava, Lombok, jQuery λ±μ΄ μλ€.
νλ μμν¬(Framework)
νλ μμν¬(Framework)λ μμ©νλ‘κ·Έλ¨μ΄λ μννΈμ¨μ΄μ μ루μ κ°λ°μ μμνκ² νκΈ° μν΄ μ 곡λ μννΈμ¨μ΄ νκ²½μ λλ€.
νλ‘κ·Έλ¨μ κΈ°λ³Έ ꡬ쑰(λΌλ)λ₯Ό μλ―Ένλ©°, μλμ°¨λ‘ μλ₯Ό λ€μμ λ μλμ°¨μ νλ μμ΄λΌκ³ ν μ μμ΅λλ€. μνλ κΈ°λ₯ ꡬνμλ§ μ§μ€νμ¬ λΉ λ₯΄κ² κ°λ°ν μ μλλ‘ κΈ°λ³Έμ μΌλ‘ νμν κΈ°λ₯μ κ°μΆκ³ μλ κ²μΌλ‘ μμμ μ€λͺ ν λΌμ΄λΈλ¬λ¦¬κ° ν¬ν¨λμ΄ μμ΅λλ€. νλ μμν¬λ§μΌλ‘λ μ€νλμ§ μμΌλ©° κΈ°λ₯μ μΆκ°ν΄μΌ νκ³ , νλ μμν¬μ μμ‘΄νμ¬ νλ μμν¬κ° μ μν κ·μΉμ μ€μνμ¬ κ°λ°ν΄μΌ ν©λλ€.
νΉμ§
- μνΈ νλ ₯νλ ν΄λμ€μ μΈν°νμ΄μ€μ μ§ν©μ΄λ€.
- μμ© νλ‘κ·Έλ¨μ΄ μλμ μΌλ‘ νλ μμν¬μ μν΄ μ¬μ©λλ€. (κ·μΉμ μ§μΌκ°λ©° μ¬μ©νλ κ²)
- μννΈμ¨μ΄μ νμ μ 곡(κ·μΉμ΄ μ ν΄μ Έ μμ)
- Spring, Django, React, Angular λ±μ΄ μλ€.
APIμ λΌμ΄λΈλ¬λ¦¬μ μ°¨μ΄
ꡬν λ‘μ§μ μ 무μ λ°λΌ κ°λ¦½λλ€.
- API: μ»΄ν¬λνΈλ₯Ό μ¬μ©νλ κ·μ½ λ° νΈμΆμ μν μλ¨μΌλ‘μ¨ κ΅¬ν λ‘μ§μ΄ νμνμ§ μμ΅λλ€.
- λΌμ΄λΈλ¬λ¦¬: μ»΄ν¬λνΈ μ체λ‘μ¨, ꡬν λ‘μ§μ΄ μ‘΄μ¬ν©λλ€.
λΉμ λ₯Ό νμλ©΄, λΌμ΄λΈλ¬λ¦¬λ λꡬ μ체μ΄κ³ APIλ "λꡬ μ£ΌμΈμ!"λΌκ³ μμ²νλ κ²μ΄λΌ λ³Ό μ μμ΅λλ€.
λΌμ΄λΈλ¬λ¦¬μ νλ μμν¬μ μ°¨μ΄
μμ©νλ‘κ·Έλ¨μ νλ¦ μ£ΌλκΆμ λκ° κ°μ§κ³ μλμ§, μ¦ λκ° λꡬλ₯Ό 컨νΈλ‘€νλκ°μ λ°λΌ κ°λ¦½λλ€.
- λΌμ΄λΈλ¬λ¦¬: κ°λ°μκ° μ½λλ₯Ό 컨νΈλ‘€ν©λλ€. μ¦, κ°λ°μκ° λΌμ΄λΈλ¬λ¦¬λ₯Ό νΈμΆν©λλ€.
- νλ μμν¬: κ°λ°μκ° νλ μμν¬μ κ·μΉμ λ°λΌ μ½λ©μ ν©λλ€. μ¦ νλ μμν¬κ° κ°λ°μλ₯Ό νΈμΆν©λλ€.