Study/Spring

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

AC 2019. 8. 3. 21:22

 

 

애플리케이션 아키텍처는 시스템 개발의 성공에서 가장 중요한 요소이다. '난 프로그래머니까 설계나 아키텍처와는 관계없다'고 하지 말고 꼭 구독해보자. 게다가 우리가 생각하는 프로그래머란 애플리케이션 아키텍처를 이해해야 비로서 한 사람 몫을 할 수 있다.

레퍼런스나 설명서를 읽고 자바로 코딩할 수 있는 정도로는 절반의 몫밖에 하지 못한다. 또한 애플리케이션 아키텍처를 이해하지 않고는 스프링이 왜 웹 애플리케이션 개발에 필요한지 이해할 수 없을 것이다.

 

출처 : 구글이미지


애플리케이션 아키텍처의 필요성에 대해 알아보자.
애플리케이션 아키텍처는 일반적으로 애플리케이션 전체의 구조, 공통된 방식(메커니즘) 이라고 정의할 수 있다. 다시 말해, 시스템의 애플리케이션이 공통적으로 이용할 수 잇는 사용자 인터페이스 구조나 데이터베이스 접근 방식 등 시스템의 기반이되는 부분을 말한다. 그러나 아키텍처는 다양하게 정의할 수 있다. 이것은 그중 하나일 뿐 절대적인 정의가 아니라는 점을 이해해야 한다.

그 다음은 웹 애플리케이션 개발에 대한 목표가 필요하다.
목표가 없다는 것은 애플리케이션 아키텍처를 적당히 생각했다는 말과 같다. 목표는 일반적으로 크게 두 가지가 있다. 웹 애플리케이션 개발에서는 이 두 가지 목표를 더욱 구체화하는 것이 좋다.

첫째는 유스 케이스(use case)등으로 표현되는 기능 요구나 응답 시간 등을 규정한 비기능적 요구를 포함한 사용자의 요구를 만족한다는 목표이다.

둘째는 비동기 요건이나 제약에 포함되는 개발 기간 엄수나 변경, 기능 추가의 용이성, 테스트의 용이성 등 개발자나 운영자를 위한 목표이다. 이 책에서는 두 번째인 개발자를 위한 목표를 만족하는 애플리케이션 아키텍처를 주로 채택할 것이다. 구체적으로 다음과 같은 구조로 이루어진 애플리케이션 아키텍처의 실현을 목표로 한다.

● 개발 효율
 - 의도를 파악하기 쉽고 이해하기 쉬운 구조
 - 테스트하기 쉬운 구조

● 유연성
 - 변경하기 쉽고 기능을 추가하기 쉬운 구조
 - 미래의 환경 변화에 대응할 수 있는 견고한 구조

물론 개발자나 운영자의 요구를 만족하기 위해서는 사용자의 요구를 만족하는 것이 전제 조건이다. 반대로 이러한 개발자나 운영자의 요구를 만족할 수 있다면 사용자도 개발이나 운용비용을 낮추는 데 크게 기여할 것이다.

개발자와 운영자를 위한 애플리케이션 아키텍처는 이해하기 쉽고 테스트하기도 쉬운 개발 효율성과, 변경하기 쉬운 아키텍처의 유연성 두 가지로 분류할 수 있다. 그러면 이제부터 왜 이러한 목표가 필요한지 살펴보자.


LIST