Back
ESSAY번역
DEC 10, 2025

EP184: API 와 SDK 차이점

원문: EP184: API Vs SDK!


이번 주 System Design 리프레셔:

  • API Vs SDK!
  • SQL Injection (SQLi)
  • AI Agent의 유형
  • 2025년 소프트웨어 아키텍처를 배우기 위한 24가지 유용한 리소스
  • Cross-Site Scripting (XSS) 공격

API Vs SDK!

Image

API(Application Programming Interface)와 SDK(Software Development Kit)는 소프트웨어 개발 세계에서 필수적인 도구이지만, 서로 다른 목적을 가지고 있습니다.

API: API는 서로 다른 소프트웨어 애플리케이션과 서비스가 서로 통신할 수 있도록 하는 규칙과 프로토콜의 집합입니다.

  • 소프트웨어 컴포넌트들이 어떻게 상호작용해야 하는지를 정의합니다.
  • 소프트웨어 컴포넌트 간의 데이터 교환과 기능 접근을 용이하게 합니다.
  • 일반적으로 endpoint, request, response로 구성됩니다.

SDK: SDK는 개발자가 특정 플랫폼, 프레임워크, 또는 하드웨어용 애플리케이션을 개발하는 데 도움을 주는 도구, 라이브러리, 샘플 코드, 문서화 등을 포함한 종합적인 패키지입니다.

  • 더 높은 수준의 추상화를 제공하여 특정 플랫폼 개발을 단순화합니다.
  • 특정 플랫폼이나 프레임워크에 맞춤화되어 해당 플랫폼에서의 호환성과 최적의 성능을 보장합니다.
  • 처음부터 구현하기 어려울 수 있는 플랫폼 고유의 고급 기능과 capability에 대한 접근을 제공합니다.

API와 SDK 중 어떤 것을 선택할지는 프로젝트의 개발 목표와 요구사항에 따라 달라집니다.

여러분의 생각은요: API와 SDK 중 어느 쪽을 더 선호하시나요? 모든 구현에는 고유한 스토리가 있습니다. 여러분의 이야기는 무엇인가요?


SQL Injection (SQLi)

SQL Injection은 가장 오래되고 위험한 웹 취약점 중 하나입니다. 몇 가지 조작된 입력만으로 공격자는 데이터베이스 쿼리를 조작하여 민감한 데이터에 접근할 수 있습니다.

Image

Basic SQLi (Tautology 기반): 공격자가 1=1과 같은 조건을 주입하여 인증을 우회하고 모든 레코드를 조회합니다.

In-band SQLi (Union/Error 기반): 공격자가 UNION SELECT를 사용하거나 에러 메시지를 활용하여 사용자 이름, 비밀번호 또는 기타 민감한 데이터를 직접 추출합니다.

Blind SQLi (Boolean 기반): 직접적인 출력은 보이지 않지만, 페이지가 결과를 반환하는지 여부에 따라 공격자가 데이터베이스 정보를 유추합니다.

Blind SQLi (Time 기반): 공격자가 SLEEP(5)와 같은 명령을 사용하여 서버 응답 지연을 측정하고 데이터를 점진적으로 추출합니다.

여러분의 생각은요: SQLi를 어떻게 방지하시나요? prepared statement, ORM, 아니면 다른 방법을 사용하시나요?


AI Agent의 유형

AI agent들은 모두 같은 방식으로 사고하고 행동하지 않습니다. 단순한 규칙 추종자부터 학습하고 적응하는 시스템까지 다양합니다. 각 유형은 기계가 인식하고, 결정하고, 행동하는 방식에서 한 단계 진보를 나타냅니다.

Image

  • Simple Reflex Agent: 조건-행동 규칙을 따릅니다. 예를 들어, 온도가 높으면 팬을 켭니다. 메모리도 없고 사고도 없이 즉각적인 반응만 합니다. 빠르고 단순합니다.

  • Model-based Reflex Agent: 환경에 대한 내부 이해를 유지합니다. 즉각적인 입력에만 반응하는 것이 아니라, 현재 볼 수 있는 것 이상으로 무슨 일이 일어나고 있는지 파악하는 데 도움이 되는 모델을 가지고 있습니다.

  • Goal-based Agent: 여기서는 목표에 초점이 맞춰집니다. 특정 행동이 agent를 목표에 더 가깝게 만드는지에 따라 결정이 내려집니다.

  • Utility-based Agent: 여러 결과를 비교 평가하여 한 단계 더 나아갑니다. 트레이드오프를 균형 있게 고려하면서 최선의 전체 결과를 제공하는 행동을 선택합니다.

  • Learning Agent: 가장 발전된 형태입니다. 피드백을 사용하여 적응하고 시간이 지남에 따라 더 나은 성능을 발휘하면서 지속적으로 개선됩니다.

여러분의 생각은요: 오늘날 대부분의 AI 시스템을 이끌고 있는 agent 유형은 무엇이라고 생각하시나요?


2025년 소프트웨어 아키텍처를 배우기 위한 24가지 유용한 리소스

Image

리소스는 다음과 같은 유형으로 분류할 수 있습니다:

  • Software Design 도서 DDIA, System Design Volume 1 & 2, Clean Architecture, Domain-Driven Design, Software Architecture: the Hard Parts 등의 책이 도움이 될 수 있습니다.

  • Tech Blog와 Newsletter Netflix, Uber, Meta, Airbnb 같은 기업들의 기술 블로그를 읽어보세요. 또한 ByteByteGo 뉴스레터는 매주 소프트웨어 설계에 대한 인사이트를 제공합니다.

  • YouTube 채널과 아키텍처 리소스 MIT Distributed Systems, Goto Conferences, ByteByteGo 같은 YouTube 채널이 소프트웨어 아키텍처와 시스템 설계에 도움이 됩니다. Azure Architecture Center와 AWS Architecture Blog도 중요한 리소스입니다.

  • Whitepaper 더 깊은 인사이트를 위해 Facebook Memcache Scaling, Cassandra, Amazon DynamoDB, Kafka, Google File System 같은 whitepaper를 읽어보세요.

  • 소프트웨어 커리어 도서 Software Architect는 종합적인 스킬도 개발해야 합니다. Pragmatic Programmer, The Software Architect Elevator, The Software Engineer's Guidebook, Philosophy of Software Design 같은 소프트웨어 커리어 관련 책들이 도움이 됩니다.

여러분의 생각은요: 이 목록에 어떤 리소스를 추가하시겠습니까?


Cross-Site Scripting (XSS) 공격

작은 스크립트 하나가 큰 피해를 일으킬 수 있습니다. XSS는 공격자가 웹 페이지에 악성 코드를 주입하여 사용자 세션을 하이재킹하거나, 쿠키를 탈취하거나, 브라우저를 조작할 수 있게 합니다.

Image

Reflected XSS: 이 유형의 공격은 누군가가 악성 링크를 클릭할 때 발생합니다. payload가 URL에 포함되어 있다가 응답에 반영되어 실행됩니다. 클릭을 유도해야 하기 때문에 피싱 캠페인에서 자주 사용됩니다.

Stored XSS: 악성 코드가 데이터베이스에 저장됩니다. 댓글 필드나 사용자 프로필에 저장될 수 있습니다. 그러면 누군가가 해당 페이지를 로드할 때마다 자동으로 실행됩니다.

DOM-based XSS: payload가 서버를 거치지 않고 브라우저에서 직접 DOM을 조작합니다. 전통적인 서버 측 유효성 검사로는 잡아내기가 더 어렵습니다.

여러분의 생각은요: 더 많은 개발자들이 알았으면 하는 XSS 방지 기법은 무엇인가요?

Thank you for reading.

Based in Seoul
Since 2024