Spring finance: Part 1 - Introduction And Architecture

이글은 Stefan Schmidt가 쓴 Spring Finance를 번역한 것이다.

Part 1: Introduction & Architecture

StSMedia.net에 새로운 (엔터프라이즈) 자바 개발 블로그를 시작하면서 String 프레임워크(Spring 프레임워크와 관련된 프로젝트와 제품들을 포함해서)를 다양한 각도에서 단계별로 소개하는 샘플 어플리케이션을 만들고 싶었다.

[나는 현재 Spring 프레임워크를 지원하는 SpringSource에서 시스템 엔지니어로 일하고 있지만 내 블로그에 공개하려고 하는 이 시리즈는 제 아이디어와 코드를 이용한 것이다. SpringSource에서 지원받지 않았다.]

샘플 어플리케이션에 대해.

소개

Spring Finance는 심슨 가족을 위한 간단한 자금 추적 어플리케이션이다. 아마 심슨 가족은 온갖 재정적인 문제에 시달린다. 심슨 가족은 자주 이웃인 네드 플랜더스나 스프링필드 원자력발전소 사장 번즈씨에게서 돈을 빌린다. 그리고 호머는 돈을 빌리고 갚아야 하는 것을 자주 잊는다. Spring Finance는 이 부분을 도울 것이다.

Spring Finance의 도메인은 DDD(Domain Driven Design)의 원칙을 따른다. 다음 단락은 Eric Evan의 Domain Driven Degisn, 415페이지에 설명된 'the problem domain'에 따르는 비전을 먼저 제시한다.

도메인 비젼

Spring Financ는 3개의 그룹으로 나뉜다. 그 것은 계좌 관리자, 고객, 대중이다. 계좌 관리자는 다른 그룹들 사이의 금융 트랜잭션을 알기에 필요한 모든 프로세스가 도메인 모델에 반영돼야 한다. 모델로는 중개인(stakeholder), 계좌(account), 금융 트랜잭션(financial transaction), 금융 상품(financial product)이 있을 수 있다. 하지만 이 모델은 복합 이자율같은 그렇게 복잡한 개념을 포함하지도 않고 금융의 그 심오한 오의를 모두 설명하지도 못한다. 그래도 다음의 요구사항은 만족해야 한다.

첫 요구사항

이 시스템에서 제공하는 금융 상품은 일반 대중에게 공개된다. 계좌 관리자는 모든 금융 상품, 금융 트랜잭션, 계좌, 중계인을 만들고 읽고 수정하고 삭제할 수 있다. 금융 상품은 대출, 현금 계좌, 운용 펀드(Managed Fund)를 우선(initially) 포함해야 한다. 고객이 로그인 하면 자신의 계좌의 정보를 볼 수 있어야 한다. [좀 더 구체적인 요구사항은 나중에 다룰 것이다.]

첫 도메인 다이어그램

다음은 언급한 요구사항을 반영하여 상대적으로 고수준으로 설계한 클래스 다이어그램이다.

initial-class_diagram.png

나는 숙련된 은행원였고 10년 전 즈음에 이 개념들을 배웠다. 그러나 나는 이 일을 먹고 살지 않았다. 은행 업무에 대한 이해가 녹슬었을지 모르지만 금융 플래너인 내 와이프가 설계를 검토해 주었다. 좀 더 숙련된 ‘도메인 전문가’가 설계를 개선해 주길 기다리고 있다.

스프링 프로젝트

위에서 언급한데로, Spring Finance의 주된 목적은 스프링 프레임웍크들을 사용하여 엔터프라이즈 자바 어플리케이션을 개발하는 방법을 소개하고 최근 추가된 기능들이 어떻게 실세계에 적용할 수 있을지를 보여주는 것이다.

이 시리즈에서 사용할 스피링 프로젝트는 다음과 같다:

  • Spring 3.0
    • new REST feature
    • new Expression Language (EL) features
    • Annotation based MVC controllers (available since Spring 2.5)
  • Spring Security
  • Spring JavaScript & Dojo
  • Spring Web Flow
  • Spring AOP & AspectJ
  • Spring dm & SpringSource dm Server
  • Spring Integration
  • Spring Web Services
  • Spring & Esper
  • Spring Finance in the cloud

(이게 전부가 아니고 유즈 케이스에 따라 달라질 수 있다.)

이제 Spring 3, REST, EL, MVC에 대한 글을 쓸때가 됐다. Spring Finance 어플리케이션의 소스코드는 SVN 저장소를 통해서 공개할 거다.