본문으로 바로가기
TaeyoungKim.dev

module·component·API·middleware 차이: 웹 플랫폼 책임 경계

웹작성 약 4분 읽기TaeyoungKim
LinkedInX

시스템 그림에 module, component, API, middleware가 모두 상자로 그려지면 경계가 비슷해 보인다. 하지만 어떤 것은 코드를 나누는 단위이고, 어떤 것은 호출 계약이며, 어떤 것은 서로 다른 시스템 사이를 연결하는 실행 계층이다.

같은 요청도 화면 조각, 외부 계약, 중간 처리와 내부 구성이라는 서로 다른 경계를 지난다.

architecture module component는 어느 크기의 경계일까?

architecture는 시스템의 주요 구성 요소, 책임, 관계와 중요한 제약을 설명한다. 특정 폴더 구조 하나가 아니라 시스템이 왜 그렇게 나뉘고 어떻게 상호작용하는지 보여 주는 큰 관점이다.

module은 관련 기능과 코드를 하나의 단위로 묶고 외부에 필요한 부분만 노출하는 경계다. component는 독립적으로 조합·배포·교체할 수 있는 구성 요소라는 뜻으로 쓰이지만 프레임워크와 조직에 따라 크기가 다르다.

이름보다 다음을 확인해야 한다.

  • 어떤 책임을 소유하는가?
  • 외부에 무엇을 공개하는가?
  • 어떤 다른 요소에 의존하는가?
  • 독립적으로 시험하거나 배포할 수 있는가?

object class abstraction은 코드를 어떻게 모델링할까?

class는 객체가 가질 데이터와 동작의 틀을 정의하고, object는 그 틀이나 프로토타입을 바탕으로 생성되어 상태와 동작을 가진 개체다. 정확한 객체 모델은 언어마다 다르다.

abstraction은 문제에서 중요한 특성만 드러내고 구현 세부사항을 감춰 모델을 단순하게 만든다. 결제 수단 인터페이스가 pay(amount)를 제공하면 호출자는 카드사별 통신 세부사항을 몰라도 같은 계약을 사용할 수 있다.

encapsulation은 내부 상태와 구현 접근을 통제해 변경 영향을 줄이는 원리다. 필드를 private으로 만드는 것만이 아니라 외부가 의존할 안정된 동작을 정하는 일이 중요하다.

API와 middleware는 무엇을 연결할까?

API(Application Programming Interface)는 다른 소프트웨어 기능을 호출하거나 데이터를 교환하기 위한 규칙과 계약이다. 함수 시그니처, 라이브러리 인터페이스, HTTP 요청·응답 형식 모두 문맥에 따라 API가 될 수 있다.

middleware는 애플리케이션과 운영체제, 서비스와 서비스 사이에서 통신·인증·메시지·트랜잭션 같은 공통 기능을 제공하는 중간 계층이다. API가 ‘어떻게 호출할지’라는 계약이라면 미들웨어는 그 계약을 전달하거나 실행하도록 돕는 소프트웨어일 수 있다.

API 문서가 있어도 타임아웃, 재시도, 인증, 버전 호환성을 정의하지 않으면 통합은 불안정하다. 중간 계층이 오류를 모두 숨기게 하면 원인을 찾기 어려우므로 실패와 관측 경계도 명확히 한다.

web server WAS JSP JavaScript는 어느 층에 있을까?

web server는 HTTP 요청을 받고 정적 파일을 제공하거나 동적 요청을 뒤의 애플리케이션으로 전달한다. WAS(Web Application Server)는 동적 요청을 실행하고 세션, 트랜잭션, 데이터베이스 연동 같은 애플리케이션 서비스를 제공하는 서버 소프트웨어를 가리킨다.

Jakarta Server Pages(JSP)는 서버에서 동적 웹 콘텐츠를 생성하는 Jakarta EE 기술이다. 브라우저에서 실행되는 JavaScript와 이름이 비슷해도 실행 위치와 역할이 다르다.

text
브라우저 JavaScript
        |
      HTTP API
        |
웹 서버 / WAS -- 애플리케이션 모듈 -- 데이터베이스

실제 제품은 웹 서버와 애플리케이션 서버 역할을 함께 제공할 수 있다. 이름만으로 경계를 단정하지 말고 요청을 누가 받고, 코드를 어디서 실행하며, 세션과 데이터 접근을 누가 책임지는지 본다.

coupling cohesion은 설계 품질을 어떻게 볼까?

cohesion은 한 모듈 안의 기능이 하나의 책임에 얼마나 잘 모여 있는지, coupling은 모듈 사이의 의존이 얼마나 강한지를 나타낸다. 관련 기능을 응집시키고 불필요한 결합을 줄이면 변경 범위와 시험 경계를 이해하기 쉬워진다.

결합이 0인 시스템을 목표로 할 필요는 없다. 필요한 협력은 API 계약으로 드러내고, 내부 데이터 구조나 배포 순서까지 불필요하게 공유하지 않는 것이 핵심이다.

핵심 요약

아키텍처는 시스템의 큰 구조와 제약, 모듈·컴포넌트는 책임을 묶는 구성 경계, 객체·클래스·추상화는 코드 모델링 단위다. API는 호출과 데이터 교환 계약이고 미들웨어는 시스템 사이의 공통 실행 기능을 제공한다. 웹 서버·WAS·JSP·JavaScript는 실행 위치와 책임이 다르다. 상자 이름보다 소유 책임, 공개 계약, 실행 위치와 실패 경계를 확인하자.

작성자

TaeyoungKim

기초 개념을 구현과 검증, 실제 운영 판단까지 연결해 기록합니다.

#모듈#컴포넌트#API#미들웨어#WAS#소프트웨어 설계#개발자 영어

함께 읽으면 좋은 글