SMALL

Study 441

[Spring Framework] 도메인 모델

대규모 개발쯤 되면 기본적으로 트랜잭션 스크립트와 같은 로직 주도 설계로 만드는 경우가 많지만, 최근 시스템 개발은 비즈니스 로직이 복잡한 것도 많다. 또한 웹 애플리케이션의 생명 주기를 고려해 상속 등 객체 지향의 이점을 살린 변경이나 확장의 용이성이 필요할 때도 많다. 그럴 때 트랜잭션 스크립트 비즈니스 로직이 된다. 이를 방지하려면 도메인 패키지의 클래스에 도메인 로직을 두는 도메인 모델로 비즈니스 로직 층을 만드는 것이 좋다. 다만 실제 개발에서는 도메인 모델을 이용해 아름답게 만드는데 너무 집착하다가 동작하지도 않고 납품할 수도 없는 애플리케이션을 만드는 일만은 피하자. 현실에서는 도메인 모델로 만들다 한계를 느끼면 재빨리 트랜잭션 스크립트로 전환하는 두뇌의 유연성도 필요하다. 그리고 앞으로를 ..

Study/Spring 2019.08.03

[Spring Framework] 비즈니스 로직 층의 패턴

비즈니스 로직 층을 설계할 때는 어느 클래스에 로직을 할당할지 중요하다. 판단하기 아주 어려운 문제지만 설계 실력을 보여줄 수 있는 기회이기도 하다. 여기서 실패하면 아픙로의 작업이 힘들어지므로 실제 개발에서는 서둘지 말고 차분히 생각해서 결정해야 한다. 트랜잭션 스크립트 일반적인 지침으로는 데이터베이스의 내용을 표시/변경하기만 하는 업무 처리, 즉 비즈니스 로직이 적은 단순 입출력 애플리케이션일 때는 로직을 전부 서비스 클래스에 포함시키는 편이 좋다. 또한, 객체 지향 지식이 없는 프로그래머가 많이 일하는 대규모 개발 프로젝트에서도 도메인에는 가능한 한 로직을 포함시키지 않는 편이 좋을 것이다. 이때는 도메인이 아니라 단순히 값을 저장하기만 하는 오브젝트, 사람에 따라서는 VO{(Value Object..

Study/Spring 2019.08.03

[Spring Framework] 비즈니스 로직 층의 역할

비즈니스 로직 층은 서비스나 도메인 같은 비즈니스 로직을 구현하는 웹 애플리케이션의 중심이다. 개인적으로는 웹 애플리케이션의 성공은 비즈니스 로직 층에 달려 있다고 믿는다. 다음 표처럼 비즈니스 로직 층은 유스 케이스로 표현되는 특정 업무나 특정 부서 처리의 통합인 서비스 및 도메인으로 구성된다. 도메인은 서비스에서 시작되는 비즈니스 실행에서 필요한 고객이나 주문 등의 처리르 구현하는 클래스의 집합이다. 이 서비스와 도메인은 각각 비즈니스 층에 만들어진 서비스 패키지의 클래스와 도메인 패키지의 클래스로 구현한다. 그런데 개발할 때나 운영할 때나 웹 애플리케이션의 기능 추가와 변경은 주로 비즈니스 로직 층의 로직 변경이다. 다시 말해 아키텍처가 유연한 웹 애플리케이션을 만들기 위해서는 로직 층을 잘 만드는..

Study/Spring 2019.08.03

[Spring Framework] 다양화되는 사용자 인터페이스

웹 애플리케이션이 비즈니스에 도입될 당시에는 한정된 사람만이 컴퓨터를 이용했고 일반 소비자는 별로 이용하지 않았다. 그래서 시스템 운영을 우선했고 사용자 인터페이스는 대충 만드는 경우가 많았다. 물론 버튼 위치라든가 표의 위치 등 세밀한 부분에 신경 쓰는 경우는 당시에도 있었지만, 사용자 인터페이스 자체가 지금처럼 복잡하지 않아 개발 기간을 생각하면 개발 비용의 차이는 미미한 수준이었다. 그러나 요즘은 일반 가정까지 컴퓨터(컴퓨터라고 부르는 자체가 시대에 뒤처져 보이기도 하지만)가 보급돼 초등학생도 인터넷으로 쉽게 검색할 수 있다. 웹 브라우저에서는 Ajax에 의한 비동기 통시능로 편의성 향상을 도모하고, iOS나 Android 등을 사용하는 스마트폰에서는 TV 게임과 같은 사용자 인터페이스를 제공하고 ..

Study/Spring 2019.08.03

[Spring Framework] MVC2란?

예전 J2EE의 MVC2(Model-View-Controller)는 스몰토크(smalltalk)에서 확립된 MVC 패턴을 참고한 것으로, Model 부분에 JavaBeans(EJB), View 부분에 JSP, Controller 부분에는 Servlet을 사용한다. MVC2라는 이름은 스몰토크의 MCV 패턴을 따라했거나, JSP Model2가 MVC 패턴과 유사한 데서 만들어진 것으로 보인다. Column2 MVC2와 JSP 모델 JSP 모델은 표시 부분인 프레젠테이션과 비즈니스 로직을 분리해 변경을 최소화하는 기술의 발전사를 보여준다고 할 수 있다. 일반적으로 컨트롤러는 스프링이 제공하는 스프링 MVC나 오픈 소스의 MVC 프레임워크에서 제공되므로 이를 이용할 때가 많다. 요즘은 그런 일이 없겠지만 프로..

Study/Spring 2019.08.03

[Spring Framework] 오목형 레이어

웹 애플리케이션의 레이어는 크게 비즈니스와 관련된 부분과 비즈니스 로직의 결과를 어떻게 표현할지 구현하는 두 부분으로 나눌 수 있다. 비즈니스 로직이야말로 애플리케이션에서 가장 중요하며, 비즈니스 로직의 결과를 어떻게 다룰지 구현하는 기술(예를 들어 브라우저에 표시하거나 RDB에 저장하는 기술 등)이 비즈니스 로직에 영향을 미치지 않는 것이 좋은 설계이다. 그러므로 기존의 세로형 레이어를 버리고 새로운 형태의 레이어를 생각해야 한다. 그것이 이번에 다룰 오목형 레이어이다. 아래 그림에 관해 덧붙이자면 UML 방식으로 그린 것이다. 그림 안의 동그라미는 UML의 인터페이스, 사각형은 클래스이다. 자바를 이용하는 엔지니어라면 반드시 UML을 읽을 수 있어야 한다. 혹시 그림의 원이나 사각형에서 뻗어가는 점선..

Study/Spring 2019.08.03

[Spring Framework] 티어와 레이어

웹 애플리케이션의 아키텍처는 크게 티어라고 하는 물리층과 레이어라고 하는 논리층으로 나뉜다. 티어와 레이어 양쪽 다 한국어에서는 층이니 중의해야 한다. (사람에 따라서는 티어를 단, 레이어를 층으로 구별하기도 하지만, 보통 양쪽 다 층으로 해석한다.) 티어는 클라이언트 층, 중간층, EIS(enterprise Information System)층의 3개 층이 기본이다. 기본적으로 웹 애플리케이션에서 고려할 것은 중간 층이지만, 현재의 웹 애플리케이션에서는 클라이언트 층이 데스크톱 컴퓨터이고 중간층에 있는 웹 애플리케이션에서 웹 브라우저에 HTML을 보내는 것이라는 설명만으로는 충분하지 않는다. 예를 들어, 클라이언트가 스마트폰이고 스마트폰 앱이 웹 애플리케이션의 기능 일부를 구현하는 경우도 있다. 그럴 ..

Study/Spring 2019.08.03

[Spring Framework] 애플리케이션 아키텍처는 자유로운 발상으로

애플리케이션 아키텍처를 개발하는데 한 가지 오해하지 말아야 할 것이 있다. 사용자의 요구에 따라서 변경이나 확장의 용이성을 무시하고 애플리케이션 아키텍처 등을 고려하지 않은 채 JSP로 데이터베이스에 직접 접근해도 좋다는 것이다. 이 역시 사용자의 요구를 만족하기 위한 훌륭한 기술이다. 사용자의 요구나 여러 조건도 고려하지 않고 '책에 쓰여 있으니까' 또는 '외국의 유명한 사람이 말했으니까'라는 이유만으로 이것도 안된다, 저것도 안 된다고 하는 엔지니어가 많다. 우리는 이러한 꽉 막힌 사고방식에는 반대한다. 그것이야말로 엔지니어의 창조력을 방해하고 일하는 즐거움을 앗아가는 일이기 때문이다. 우리가 지향하는 웹 애플리케이션 개발이란 사용자의 요구와 개발자/운영자의 요구라는 두 가지 목표를 만족하는 애플리케..

Study/Spring 2019.08.03

[Spring Framework] 개발 효율성과 애플리케이션 아키텍처의 필요성

우선 개발 효율성을 살펴보자. 이 목표가 왜 필요한지는 직관적으로 이해할 수 있을 것이다. 애플리케이션의 아키텍처를 이해하기 위해 5,000쪽이나 되는 문서를 읽어야 한다거나 애플리케이션의 아키텍처를 동작하게 하려고 의미를 알 수 없는 주문 같은 코드를 삽입해야 한다면 말이 되지 않을 것이다. 애플리케이션 아키텍처는 이해하기 쉽고 간단히 사용할 수 있어야 한다. 테스트도 마찬가지이다. 어떤 오브젝트를 테스트하기 위해 웹 컨테이너를 꼭 준비해야 하거나 라이브러리에 클래스 경로를 이것저것 설정해야 하거나 테스트를 위해 구현을 변경하는 것은 귀찮은 작업이다. 테스트는 간단하게 실행할 수 있는 것이 가장 좋다. 웹 애플리케이션의 생명 주기와 애플리케이션 아키텍처의 필요성에 대해 알아보자. 애플리케이션 아키텍처의..

Study/Spring 2019.08.03

[Spring Framework] 애플리케이션 아키텍처

애플리케이션 아키텍처는 시스템 개발의 성공에서 가장 중요한 요소이다. '난 프로그래머니까 설계나 아키텍처와는 관계없다'고 하지 말고 꼭 구독해보자. 게다가 우리가 생각하는 프로그래머란 애플리케이션 아키텍처를 이해해야 비로서 한 사람 몫을 할 수 있다. 레퍼런스나 설명서를 읽고 자바로 코딩할 수 있는 정도로는 절반의 몫밖에 하지 못한다. 또한 애플리케이션 아키텍처를 이해하지 않고는 스프링이 왜 웹 애플리케이션 개발에 필요한지 이해할 수 없을 것이다. 애플리케이션 아키텍처의 필요성에 대해 알아보자. 애플리케이션 아키텍처는 일반적으로 애플리케이션 전체의 구조, 공통된 방식(메커니즘) 이라고 정의할 수 있다. 다시 말해, 시스템의 애플리케이션이 공통적으로 이용할 수 잇는 사용자 인터페이스 구조나 데이터베이스 접..

Study/Spring 2019.08.03
반응형