Home > CS > 2024 > πŸ’Ύ [CS] APIμ—μ„œμ˜ μΈν„°νŽ˜μ΄μŠ€μ™€ μ†Œν”„νŠΈμ›¨μ–΄ κ³΅ν•™μ—μ„œμ˜ μΈν„°νŽ˜μ΄μŠ€ κ°œλ….

πŸ’Ύ [CS] APIμ—μ„œμ˜ μΈν„°νŽ˜μ΄μŠ€μ™€ μ†Œν”„νŠΈμ›¨μ–΄ κ³΅ν•™μ—μ„œμ˜ μΈν„°νŽ˜μ΄μŠ€ κ°œλ….
CS

πŸ’Ύ [CS] APIμ—μ„œμ˜ μΈν„°νŽ˜μ΄μŠ€μ™€ μ†Œν”„νŠΈμ›¨μ–΄ κ³΅ν•™μ—μ„œμ˜ μΈν„°νŽ˜μ΄μŠ€ κ°œλ….

  • APIμ—μ„œμ˜ μΈν„°νŽ˜μ΄μŠ€μ™€ μ†Œν”„νŠΈμ›¨μ–΄ κ³΅ν•™μ—μ„œμ˜ μΈν„°νŽ˜μ΄μŠ€λŠ” μœ μ‚¬ν•œ κ°œλ…μ„ κ³΅μœ ν•˜μ§€λ§Œ, ꡬ체적인 μ‚¬μš© λ§₯락과 λ²”μœ„μ—μ„œ μ•½κ°„μ˜ 차이가 μžˆμŠ΅λ‹ˆλ‹€.
    • 두 κ°œλ… λͺ¨λ‘ μΆ”μƒν™”λœ μƒν˜Έμž‘μš©μ˜ κ·œμΉ™μ„ μ •μ˜ν•œλ‹€λŠ” 곡톡점이 μžˆμ§€λ§Œ, λ‹€μŒκ³Ό 같은 차이점과 μœ μ‚¬μ μ΄ μžˆμŠ΅λ‹ˆλ‹€.

1️⃣ 곡톡점.

1️⃣ μΆ”μƒν™”λœ μƒν˜Έμž‘μš© κ·œμΉ™.

  • 두 κ°œλ… λͺ¨λ‘ μƒν˜Έμž‘μš©ν•˜λŠ” μ‹œμŠ€ν…œμ΄λ‚˜ λͺ¨λ“ˆ κ°„μ˜ κ·œμΉ™μ„ μ •μ˜ν•©λ‹ˆλ‹€.
    • API와 μ†Œν”„νŠΈμ›¨μ–΄ κ³΅ν•™μ—μ„œμ˜ μΈν„°νŽ˜μ΄μŠ€ λͺ¨λ‘ μ™ΈλΆ€μ—μ„œ λ‚΄λΆ€μ˜ κ΅¬ν˜„ μ„ΈλΆ€ 사항을 μ•Œ ν•„μš” 없이 제곡된 κ·œμΉ™μ— 따라 νŠΉμ • κΈ°λŠ₯을 μ‚¬μš©ν•  수 μžˆλ„λ‘ ν•©λ‹ˆλ‹€.

2️⃣ 계약(Contract) μ—­ν• .

  • κ³„μ•½μ²˜λŸΌ, μΈν„°νŽ˜μ΄μŠ€λŠ” μ–΄λ–€ κΈ°λŠ₯이 제곡되고, κ·Έ κΈ°λŠ₯이 μ–΄λ–»κ²Œ ν˜ΈμΆœλ˜λŠ”μ§€λ₯Ό κ·œμ •ν•©λ‹ˆλ‹€.
    • μ‚¬μš©μžλŠ”(λ˜λŠ” ν΄λΌμ΄μ–ΈνŠΈ)λŠ” 이 계약에 따라 μΈν„°νŽ˜μ΄μŠ€λ₯Ό ν˜ΈμΆœν•˜κ³  μ‚¬μš©ν•˜κ²Œ 되며, λ‚΄λΆ€ κ΅¬ν˜„κ³ΌλŠ” λ…λ¦½μ μœΌλ‘œ λ™μž‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

3️⃣ κ΅¬ν˜„μ˜ 독립성.

  • API와 μ†Œν”„νŠΈμ›¨μ–΄ κ³΅ν•™μ—μ„œμ˜ μΈν„°νŽ˜μ΄μŠ€ λͺ¨λ‘ κ΅¬ν˜„μ— λ…λ¦½μ μž…λ‹ˆλ‹€.
    • μ΄λŠ” μ‚¬μš©μžκ°€ μΈν„°νŽ˜μ΄μŠ€λ₯Ό 톡해 κΈ°λŠ₯을 ν˜ΈμΆœν•˜μ§€λ§Œ, κ΅¬ν˜„μ΄ μ–΄λ–»κ²Œ μ΄λ£¨μ–΄μ§€λŠ”μ§€λŠ” μ€‘μš”ν•˜μ§€ μ•Šλ‹€λŠ” 원칙을 λ”°λ¦…λ‹ˆλ‹€.
      • 이λ₯Ό 톡해 κ΅¬ν˜„ 변경이 이루어져도 μΈν„°νŽ˜μ΄μŠ€κ°€ λ™μΌν•˜κ²Œ μœ μ§€λœλ‹€λ©΄, μ‹œμŠ€ν…œ κ°„μ˜ μƒν˜Έμž‘μš©μ—λŠ” 영ν–₯이 μ—†μŠ΅λ‹ˆλ‹€.

2️⃣ 차이점.

1️⃣ APIμ—μ„œμ˜ μΈν„°νŽ˜μ΄μŠ€

  • λ²”μœ„
    • APIμ—μ„œμ˜ μΈν„°νŽ˜μ΄μŠ€λŠ” 주둜 μ‹œμŠ€ν…œ κ°„ μƒν˜Έμž‘μš©μ„ μ μš©ν•©λ‹ˆλ‹€.
      • μ™ΈλΆ€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄λ‚˜ μ„œλΉ„μŠ€κ°€ μ œκ³΅ν•˜λŠ” κΈ°λŠ₯을 ν˜ΈμΆœν•  수 μžˆλŠ” 방법을 μ œκ³΅ν•˜λ©°, μ΄λŠ” μ›Ή μ„œλΉ„μŠ€(API)λ‚˜ μ™ΈλΆ€ λͺ¨λ“ˆκ³Όμ˜ 톡신에 쀑점을 λ‘‘λ‹ˆλ‹€.
  • μ‚¬μš© λ§₯락
    • 주둜 μ›Ή API, 라이브러리 API 등에 μ‚¬μš©λ˜λ©°, ν΄λΌμ΄μ–ΈνŠΈ API 제곡자의 κ·œκ²©μ— 맞좰 κΈ°λŠ₯을 μ‚¬μš©ν•  수 μžˆλ„λ‘ ν•©λ‹ˆλ‹€.
    • API μΈν„°νŽ˜μ΄μŠ€λŠ” 주둜 ν•¨μˆ˜, λ©”μ„œλ“œ, HTTP μš”μ²­ 등을 ν†΅ν•œ μƒν˜Έμž‘μš©μ„ λ‹€λ£Ήλ‹ˆλ‹€.
    • 예: RESTful APIμ—μ„œμ˜ HTTP λ©”μ„œλ“œ(GET, POST λ“±), API 호좜 μ‹œ μ œκ³΅λ˜λŠ” μ—”λ“œν¬μΈνŠΈμ™€ νŒŒλΌλ―Έν„°, 그리고 λ°˜ν™˜λ˜λŠ” 데이터 ν˜•μ‹ 등이 API μΈν„°νŽ˜μ΄μŠ€μ— ν¬ν•¨λ©λ‹ˆλ‹€.

2️⃣ μ†Œν”„νŠΈμ›¨μ–΄ κ³΅ν•™μ—μ„œμ˜ μΈν„°νŽ˜μ΄μŠ€

  • λ²”μœ„
    • μ†Œν”„νŠΈμ›¨μ–΄ κ³΅ν•™μ—μ„œμ˜ μΈν„°νŽ˜μ΄μŠ€λŠ” ν΄λž˜μŠ€λ‚˜ λͺ¨λ“ˆ κ°„μ˜ μƒν˜Έμž‘μš©μ„ μ •μ˜ν•©λ‹ˆλ‹€.
      • μΈν„°νŽ˜μ΄μŠ€λŠ” 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ°(OOP)μ—μ„œ μ‚¬μš©λ˜λ©°, νŠΉμ • ν΄λž˜μŠ€λ‚˜ λͺ¨λ“ˆμ΄ μ–΄λ–€ λ©”μ„œλ“œλ‚˜ 속성을 μ œκ³΅ν•΄μ•Ό ν•˜λŠ”μ§€λ₯Ό μ •μ˜ν•©λ‹ˆλ‹€.
  • μ‚¬μš© λ§₯락
    • 주둜 객체 지ν–₯ μ–Έμ–΄(Java, C++, Python λ“±)μ—μ„œ μ‚¬μš©λ˜λŠ” κ°œλ…μœΌλ‘œ, μΈν„°νŽ˜μ΄μŠ€λŠ” 클래슀의 ν–‰μœ„ 계약을 μ •μ˜ν•©λ‹ˆλ‹€.
      • ν΄λž˜μŠ€κ°€ νŠΉμ • μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•˜λ©΄, ν•΄λ‹Ή μΈν„°νŽ˜μ΄μŠ€μ—μ„œ μš”κ΅¬ν•˜λŠ” λ©”μ„œλ“œλ₯Ό λͺ¨λ‘ μ •μ˜ν•΄μ•Ό ν•©λ‹ˆλ‹€.
  • μ˜ˆμ‹œ
    • Javaμ—μ„œμ˜ μΈν„°νŽ˜μ΄μŠ€λŠ” ν΄λž˜μŠ€κ°€ κ΅¬ν˜„ν•΄μ•Ό ν•  λ©”μ„œλ“œμ˜ λͺ©λ‘μ„ μ •μ˜ν•˜λ©°, 이λ₯Ό 톡해 λ‹€ν˜•μ„±(Polymorphism)을 μ§€μ›ν•©λ‹ˆλ‹€.
      • 예λ₯Ό λ“€μ–΄, μ—¬λŸ¬ ν΄λž˜μŠ€κ°€ λ™μΌν•œ μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•˜μ—¬ λ™μΌν•œ λ©”μ„œλ“œλ₯Ό λ‹€λ₯΄κ²Œ μ •μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

3️⃣ κ°œλ…μ˜ μœ μ‚¬μ„±κ³Ό 차이점 μš”μ•½.

  • API μΈν„°νŽ˜μ΄μŠ€λŠ” μ™ΈλΆ€ μ‹œμŠ€ν…œκ³Όμ˜ μƒν˜Έμž‘μš©μ„ μœ„ν•œ κ·œμΉ™μ„ μ •μ˜ν•˜λ©°, 주둜 μ„œλΉ„μŠ€ μ œκ³΅μ„ μœ„ν•΄ μ‹œμŠ€ν…œμ΄λ‚˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ κΈ°λŠ₯을 μ œκ³΅ν•  λ•Œ μ‚¬μš©λ©λ‹ˆλ‹€.
    • μ›Ή API, 라이브러리 API λ“± μ™ΈλΆ€ ν”„λ‘œκ·Έλž¨μ΄ ν˜ΈμΆœν•  수 μžˆλŠ” 방법을 μ„€λͺ…ν•©λ‹ˆλ‹€.
  • μ†Œν”„νŠΈμ›¨μ–΄ κ³΅ν•™μ—μ„œμ˜ μΈν„°νŽ˜μ΄μŠ€λŠ” 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ—μ„œ ν΄λž˜μŠ€λ‚˜ λͺ¨λ“ˆ κ°„μ˜ μƒν˜Έμž‘μš© κ·œμΉ™μ„ μ •μ˜ν•©λ‹ˆλ‹€.
    • 주둜 λ‹€ν˜•μ„±κ³Ό κ΅¬ν˜„ 독립성을 μ§€μ›ν•˜λ©°, μ—¬λŸ¬ ν΄λž˜μŠ€κ°€ λ™μΌν•œ μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•  수 μžˆλ„λ‘ ν•©λ‹ˆλ‹€.

4️⃣ κ²°λ‘ .

  • APIμ—μ„œμ˜ μΈν„°νŽ˜μ΄μŠ€λŠ” μ™ΈλΆ€ μ‹œμŠ€ν…œμ΄ μƒν˜Έμž‘μš©ν•  수 μžˆλ„λ‘ κΈ°λŠ₯을 μ œκ³΅ν•˜λŠ” 방법을 κ·œμ •ν•˜κ³ , μ†Œν”„νŠΈμ›¨μ–΄ κ³΅ν•™μ—μ„œμ˜ μΈν„°νŽ˜μ΄μŠ€λŠ” ν΄λž˜μŠ€λ‚˜ λͺ¨λ“ˆ κ°„μ˜ κ³„μ•½μœΌλ‘œμ„œ, 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ—μ„œ λ‹€ν˜•μ„±μ„ μ§€μ›ν•˜λŠ” 데 쀑점을 λ‘‘λ‹ˆλ‹€.
  • 두 κ°œλ…μ€ μƒν˜Έμž‘μš© κ·œμΉ™μ„ μ •μ˜ν•˜λŠ” 곡톡적인 κ°œλ…μ„ κ³΅μœ ν•˜λ©°, κ΅¬ν˜„κ³Ό μΆ”μƒν™”μ˜ 원칙에 κΈ°λ°˜ν•˜κ³  μžˆμ§€λ§Œ, μ‚¬μš©λ˜λŠ” λ§₯락과 λ²”μœ„λŠ” λ‹€λ¦…λ‹ˆλ‹€.