태그 보관물: architecture

정적 기록자는 이제 그만

수십년간 적응력있는 소프트웨어를 만들기 위한 노력이 지속되고 있다. 우리는 많은 원칙들과 패턴들을 도출했고 또 일부는 퇴출시켰다. 도메인은 가장 높은 적응력을 가져야 하는 소프트웨어 구성요소로 거론되고 있다. 간혹 도메인을 호스팅하는 웹 응용프로그램 코드가 도메인 코드보다 물리적으로 더 큰 비중을 차지하더라도 도메인의 중요성은 여전히 가장, 그리고 월등히, 높다.

아키텍처는 점점 다양해지고 그 수명은 점점 짧아진다. 변화하는 비즈니스 상황에 따라 동일한 도메인 논리는 다양한 호스팅 환경으로 확산되어 구동된다. 서비스 초기에는 단순한 웹 응용프로그램 호스트면 충분하다. 그러다 아마 곧 반응성에 대한 사용자들의 불만이 생겨날 것이고, 도메인 구성요소의 일부를 작업자 프로세스로 이동시켜 비동기적으로 실행해 반응성을 높여야 한다. 서비스가 성장하면 이제 도메인은 외부 서비스들과 교류하게 되고 개방형 API와 웹 훅을 통해 도메인 논리가 트리거된다. 아, 그렇지! 지금은 클라우드 시대다. FaaS(Function as a Service)를 빠뜨릴 수 없다. 다시 한 번 언급하면 도메인 논리는 동일하다. 외부 변화에 따라 다른 아키텍처로 이동되거나 확산될 뿐이다.

물론 상당수의 서비스는 성장하지 못하고 생을 다한다. 하지만 성장의 기회가 왔을 때 정적 기록자(static logger) 변수 따위가 도메인의 발목을 잡는다면 모습이 우스을 것이다. 그것도 화려하고 무거운 무언가를 도입하는 것이 아니라 고작 담백한 한 두 줄 코드 추가가 부담되어 그랬다면 말이다.

계속 읽기

Advertisements

MVVM 응용프로그램을 위한 프로젝트 구조화

MVVM 아키텍처 패턴을 사용할 때 코드의 의존관계를 엄격하게 제한함으로써 구성요소의 잘못된 설계 위험을 줄일 수 있다.

structuring-projects-for-mvvm-application

계속 읽기

MVVM 아키텍처 패턴

MVVM(Model/View/ViewModel) 패턴은 UI를 가지는 응용프로그램을 위한 아키텍처 패턴(architectural pattern)이다. MVVM 패턴은 MVC(Model/View/Controller) 패턴의 변형으로 뷰의 추상화를 만드는 것이 핵심이다. 뷰의 추상화는 재사용할 수 있고(reusable) 테스트하기 쉽다(testable). 뷰의 추상화를 통해 응용프로그램 구조는 단순해지고, 이상적으로, 시각 디자인과 표현 논리를 독립적으로 구현할 수 있다.

모델(Model)과 뷰(View)는 MVC 패턴의 그것들과 동일하다. 모델은 데이터, 비즈니스 논리, 서비스 클라이언트 등으로 구성된다. 뷰는 선언적으로 구성된 UI 요소들을 의미한다. MVVM 패턴을 학습하며 가장 집중해야할 부분은 뷰모델(ViewModel)이다. 아직까지 .NET 언어들과 XAML(eXtensible Application Markup Language, /zæməl/), Blend[1]를 제외하고 MVVM 패턴에 대해 얘기하는 것은 쉽지 않은 일이다. 하지만 나는 이 글에서 특정 플랫폼 언급을 가능하면 자제하고 뷰모델을 중심으로 MVVM 패턴의, 구현이 아니라, 개념적 특징들과 가치를 설명하려 한다.

계속 읽기

소프트웨어 아키텍트

4박5일 괌 여행을 다녀오면서 ‘소프트웨어 아키텍트가 알아야할 97가지(지앤선)’라는 책을 읽었습니다. 48명의 노련한 아키텍트들이 제공하는 조언으로 이뤄진 책입니다. 저는 시스템 구축보다 엔진 개발 경력이 많다보니 스타트업의 작은 시스템을 설계하는 것도 쉽지만은 않았습니다. 이 책을 통해 새롭게 알게된 것들은 사실 많지 않습니다. 하지만 책을 통해 반복적으로 언급되는 내용들은 envicase의 서비스 아키텍처를 설계하면서 가졌던 몇가지 고민의 결과들에 대해 안도감 혹은 확신을 가져다 주었습니다.

마치 Kent Beck이 프로덕션 코드 1줄을 위해 테스트 코드 4줄을 작성한다는 얘기를 들었을 때의 안도감과도 같습니다.

97 Things Every Software Architect Should Know

계속 읽기

Reactive MVVM(Model-View-ViewModel) 모바일 응용프로그램 아키텍쳐

Envicase(앱스토어) 개발팀은 클라이언트 응용프로그램에 사용하기 위해 Reactive MVVM 아키텍쳐를 설계했습니다. 이 포스트는 Reactive MVVM 아키텍쳐를 만든 이유와 구조를 설명합니다. 슬라이드와 본 포스트를 함께 읽어보시기를 권장합니다.

reactive-mvvm-architecture

계속 읽기