Files
2nd/10_Wiki/Topic_Programming/Architecture/Service-oriented-Architecture.md
T
Antigravity Agent 9148c358d0 docs(10_Wiki): 위키 전체 재구성 — Topic_* 폴더를 4개 카테고리로 통합 + 대규모 중복 제거
Topic_Agent/Topic_Blog/Topics/Topics_Biz/Topics_Meeting/Topics_Rag의 마크다운 지식 문서를
Topic_General/Topic_Programming/Topic_Graphic/Topic_Business 4개 카테고리로 재분류.

- 중복 제거: frontmatter의 status:duplicate/merged + duplicate_of/redirect_to 필드로
  자기 자신을 중복으로 선언한 리다이렉트 stub 1032개 제거, 완전 동일 내용 파일 472개 제거,
  동일 파일명·다른 내용 충돌 시 더 큰(완전한) 버전만 유지(162개 제거) — 총 1639개 중복 제거.
- 분류: 폴더 단위로 명확한 항목(AI_and_ML/Coding/Architecture 등 → Programming,
  Comfyui/Visual_Effects → Graphic, Topics_Biz/Topics_Meeting/사업 등 → Business,
  Poetic_Blog_Writing/창의성/Game_Design 등 → General)은 폴더 우선순위로,
  나머지 혼재 폴더(Topic_Agent/Topic_Blog/Topics 루트/Thinking & Reasoning/Other/UI_UX_Assets)는
  title/tags 키워드 스코어링으로 파일 단위 분류(불명확한 경우 General로 폴백).
  원본 폴더명은 "From_*" 서브폴더로 보존해 추적 가능성 유지.
- 최종 배치: Programming 2784 / General 1608 / Graphic 285 / Business 249 = 4926개 문서.
- 에이전트 운영 상태(.astra/.agent/.obsidian/sessions/memory/_company/docs/lessons/_shared/src)는
  지식 콘텐츠가 아니므로 재분류 대상에서 제외하고 원위치 유지.
- Topics/Topic_email(상위 보호 폴더 Topic_email과 파일명 100% 중복) 삭제 — 보호 폴더 자체는 미변경.
- 완전히 비게 된 Topic_Agent/Topic_Blog/Topics_Biz/Topics_Rag 폴더 제거.
2026-07-05 00:33:48 +09:00

5.1 KiB

id, title, category, status, canonical_id, aliases, duplicate_of, source_trust_level, confidence_score, verification_status, tags, raw_sources, last_reinforced, github_commit, tech_stack
id title category status canonical_id aliases duplicate_of source_trust_level confidence_score verification_status tags raw_sources last_reinforced github_commit tech_stack
wiki-2026-0508-service-oriented-architecture Service-oriented Architecture (SOA) 10_Wiki/Topics verified self
SOA
Service-oriented Architecture
서비스 지향 아키텍처
none A 0.9 applied
architecture
soa
integration
enterprise
2026-05-10 pending
language framework
yaml none

Service-oriented Architecture (SOA)

매 한 줄

"매 비즈니스 기능을 매 reusable, network-addressable service로 매 분해". 2000년대 enterprise integration의 매 dominant paradigm. SOAP/WS-* + ESB로 매 시작 → REST/event-driven으로 매 진화 → 매 microservices가 매 SOA의 매 fine-grained 후속. 2026년에도 매 large enterprise (banking, telecom)에 매 살아있음.

매 핵심

매 원칙

  • Service contract: 매 명시적 interface (WSDL, OpenAPI).
  • Loose coupling: 매 schema/protocol 만 의존.
  • Reusability: 매 같은 service 매 다중 consumer.
  • Composability: 매 service 합성으로 매 process 구성.
  • Discoverability: 매 registry (UDDI, Consul, k8s DNS).

매 vs Microservices

측면 SOA (classic) Microservices
크기 매 coarse-grained (business domain) 매 fine-grained
Comm ESB + SOAP HTTP/gRPC/Event
Data 매 shared DB 가능 DB-per-service
Governance 매 central 매 decentralized

매 응용

  1. 매 banking core integration.
  2. 매 telecom OSS/BSS.
  3. 매 government legacy modernization (SOAP wrap).
  4. 매 hybrid cloud (on-prem ↔ cloud SOA bridge).

💻 패턴

매 SOAP service (Java JAX-WS)

@WebService
public class OrderService {
  @WebMethod
  public OrderResponse place(@WebParam OrderRequest req) {
    return new OrderResponse("ok", req.getId());
  }
}

매 WSDL contract (요약)

<wsdl:definitions targetNamespace="http://orders.example.com">
  <wsdl:portType name="OrderService">
    <wsdl:operation name="place">
      <wsdl:input message="tns:placeRequest"/>
      <wsdl:output message="tns:placeResponse"/>
    </wsdl:operation>
  </wsdl:portType>
</wsdl:definitions>

매 ESB routing (Camel)

from("activemq:queue:orders.in")
  .choice()
    .when(xpath("/order/total > 1000"))
      .to("activemq:queue:orders.high-value")
    .otherwise()
      .to("activemq:queue:orders.standard");

매 Modern REST SOA (OpenAPI)

openapi: 3.1.0
info: { title: Orders, version: 2.0 }
paths:
  /orders:
    post:
      requestBody:
        content:
          application/json:
            schema: { $ref: "#/components/schemas/OrderRequest" }
      responses:
        "201":
          content:
            application/json:
              schema: { $ref: "#/components/schemas/Order" }

매 Service registry — Consul

consul services register -name=orders -port=8080 -address=10.0.0.5
consul catalog services
# orders, billing, inventory

매 Saga (long-running process composition)

// 매 SOA business process orchestration
async function placeOrderSaga(order: Order) {
  await orderService.create(order);
  try {
    await paymentService.charge(order);
    await inventoryService.reserve(order);
    await shippingService.schedule(order);
  } catch (e) {
    await orderService.cancel(order.id); // 매 compensation
    throw e;
  }
}

매 BPMN/Camunda (process layer)

<bpmn:process id="OrderFulfillment">
  <bpmn:serviceTask id="charge" camunda:topic="payment-charge" />
  <bpmn:serviceTask id="reserve" camunda:topic="inventory-reserve" />
  <bpmn:serviceTask id="ship" camunda:topic="shipping-schedule" />
</bpmn:process>

매 결정 기준

상황 Approach
매 enterprise legacy 통합 SOA + ESB 매 정당.
매 cloud-native greenfield Microservices 우선.
매 strict contract + governance SOA + WSDL/OpenAPI.
매 high autonomy Microservices + event-driven.
매 long-running biz process SOA + BPM (Camunda).

기본값: 매 greenfield → microservices. 매 legacy integration → SOA.

🔗 Graph

🤖 LLM 활용

언제: 매 enterprise 통합, 매 legacy modernization 설계, 매 BPM process 디자인. 언제 X: 매 small startup, 매 single-team product.

안티패턴

  • 매 ESB 매 god-object: 매 모든 logic을 ESB로 → 매 maintenance hell.
  • 매 service 가 매 DB 직접 공유: 매 loose coupling 깨짐.
  • 매 WSDL 매 micro-version 폭발: 매 versioning 전략 부재.
  • 매 SOA를 매 microservices로 매 단순 rebrand: 매 fine-grain 차이 무시.

🧪 검증 / 중복

  • Verified (Erl, SOA Principles of Service Design; Newman, Building Microservices).
  • 신뢰도 A.

🕓 Changelog

날짜 변경
2026-05-08 Phase 1
2026-05-10 Manual cleanup — SOA classic + modern REST/SOA + microservices comparison