본문 바로가기

Homo Faber

(53)
빌드 시간을 더 빠르게 하라 빌드의 통합은 형상관리도구, 워크스페이스의 소스코드 관리 도구, 배포 바이너리 버전 관리 도구 등을 통해서 상당 부분 자동화를 시킬 수 있다. 빌드는 단순히 형상관리에 있는 소스 코드들을 모두 가지고 와서 실행 파일로 컴파일을 만들어주는 의미만 포함되는 것은 아니다. 물론, 이러한 자동화 역시 전체 소스 코드의 깨짐 현상을 방지할 수 있고, 이를 지속적으로 반복적으로 수행한다면 소스 코드 깨짐 현상에 대한 위험은 줄일 수 있을 것이다. 문제는 전체 소스 코드의 크기가 적고, 어느 정도 인내할 수 있는 시간 동안 빌드를 한다면 괜찮겠지만, 소스 크기가 상당하고 많은 사람들이 만들어내는 소스 코드 (심지어 서로 다른 지역에 있는 사람들이 만들어내는 소스 코드와 같이 빌드하는 경우) 라면 상황이 달라진다. 실..
TDD, CI, CD 올해 Jolt Awards의 The Best Books에서는 6권의 최고의 책을 선정했고, 그 중에서 Jez Humble과 David Farley가 쓴 Continuous Delivery를 가장 최고의 책(Excellent Book)으로 선정했다. [관련 기사] 기사에서도 말했듯이 이책은 기존 Continuous Integration에서 코드로부터 할 수 있는 모든 것을 자동화시키는 개념을 더 확장하여(응용하여) 가상화(virtualization) 개념을 도입해 배포로 인한 무중단 서비스를 가능하게 하는 방식을 이야기하고 있다. CD에서의 테스트는 오로지 단위테스트(unit test)를 말하고 있으며, 그 테스트 수행 속도 역시 빨라야 한다. 즉, 단위테스트를 하는 범위(coverage)를 최대한 독립적..
신중하게 행동하라 - Seb Rose "무엇을 하든지 간에, 신중하게 행동하고 결과를 생각하라" Anon 어떠한 반복주기(iteration)든지 초반에는 일정이 편안하게 느끼게 됩니다. 하지만, 그렇다 할지라도 특정 시간에는 압박 상황을 피할 수는 없습니다. "올바르게 수행할 것"과 "빨리 수행할 것" 사이에서 선택하라고 하면 나중에 수행한 내용을 수정할 것이라는 생각에 "빨리 수행할 것"을 종종 선호하게 됩니다. 여러분 자신과 팀, 고객에게 지금 빨리 수행하고 이후에 수정할 것이라고 약속할 때에는 여러분은 분명 그러한 의도를 가지고 있습니다. 그러나 그 다음 반복주기에서는 새로운 문제가 나타나고 여러분은 이에 몰두하게 되는 일이 비일비재합니다. 이와 같이 지연된 작업과 같은 유형을 기술적인 빚(technical debt..
유스케이스의 상속 UML에서 상속은 classifier간에 사용할 수 있다. classifier에는 클래스, 액터, 유스케이스 등이 포함된다. 따라서, 유스케이스 간 상속(generalization) 역시 가능한 관계이다. 유스케이스 상속은 동일한 유형의 흐름이 존재하지만, 서로 다른 기능을 수행하는 경우에 상속을 통해 표현이 가능하다. 예를 들어, 은행의 계좌이체 기능은 ATM 앞에서 수행하는 기능과 텔레뱅킹, 인터넷 뱅킹 등에서 수행하는 계좌이체 기능으로 다양한 서비스로 수행되며, 이는 모두 계좌이체라는 동일한 작업을 수행한다. 이와 같이 계좌이체와 같은 기능을 상위 유스케이스로 식별하고, ATM 계좌이체, 텔레뱅킹 계좌이체, 인터넷 뱅킹 계좌이체 등으로 하위 유스케이스를 분류하여 모델링을 할 수 있다. 이때, 상위 ..
Spring의 AOP로 구현한 테스트 스파이(Spy) 테스트 스파이는 테스트 더블(double) 의 한 유형으로, 대상 시스템 내의 특정 컴포넌트의 간접적인 결과 호출을 검증하기 위한 장치이다. 즉, 테스트 스파이는 해당 컴포넌트의 행위를 검증하기(behaviour verification) 위한 테스트 장치라고 볼 수 있다. 테스트 스파이는 다음과 같은 상황에서 사용된다. 대상 시스템의 간접적인 결과를 검증하고자 하지만, 사전에 모든 속성의 값들을 예상할 수 없는 경우 Mock 객체를 사용해서 충분하게 예상을 하지 못한다고 생각할때 이를 보여주기 위한 검증을 필요한 경우 동등성 비교와 같은 검증시 단정(assertion) 메소드를 사용해서 제어하지 못하는 경우 테스트 스파이에 대한 구현은 해당 로직을 대상 컴포넌트로 주입을 함으로써 비즈니스 로직 수행 중에..
Maven에서 Flexmojo 사용하기 기존 Maven : The Definitive Guide에는 없던 내용이 온라인 상으로 추가되었다. 다음은 http://www.sonatype.com/books/maven-book/reference/flex-dev.html 에 있는 원문을 참조하여 번역한 내용이다. 19장. Flexmojo로 개발하기 19.1 개요 이 장은 Flex 애플리케이션과 라이브러리를 개발하기 위해 Maven을 사용하는데 사람들이 관심있는 Flexmojo 프로젝트에 대한 개요를 제공한다. 19.2 Flexmojo의 빌드 환경 설정 Maven으로 Flex 라이브러리와 애프리케이션을 컴파일하기 전에, 다음의 두가지 설정 작업이 필요하다. Flex 프레임워크를 포함하는 레파지토리를 참조하도록 Maven Settings 설정 Flex 단..
8장. POM 최적화와 리팩토링 3부: Maven 참고 Maven은 여러 도움이 되는 참고 소개자료 이상을 필요로 한다. 이 절은 이해가 되는 참고 자료를 제공한다. 8.1. 소개 7장에서 전체적인 기능 다중 모듈 빌드를 만드는데 여러 Maven들이 어떻게 같이 작용하는지를 살펴보았다. 해당 장의 예제가 실제 어플리케이션을 제시했지만 – DB와 상호작용하는 것, 두개의 인터페이스를 제공하는 웹 서비스, 웹 어플리케이션, 명령행에 대한 프로젝트 - 해당 에제 프로젝트는 여전히 예시용이다. 실제 프로젝트의 복잡성을 표현하려면 현재 읽고 있는 것보다 더 많은 분량의 책이 필요할 것이다. 실세계의 어플리케이션은 수년 동안 변화하며 많은 여러 팀의 개발자에 의해서 각각 서로 다른 초점을 가지면서 종종 운영된다. 실세계 프로젝트에서 다른 사람의 ..
비즈니스 컴포넌트와 데이터 ownership 비즈니스 컴포넌트의 내부 구조는 레이어드 방식보다는 크로스 레이어드 방식을 선호한다. 그러한 성질로 인해서 컴포넌트 간의 의존관계는 상당히 중요한 정보로써 관리되어야 하며, 이는 컴포넌트 방식으로 중요 비즈니스 로직을 구성할 경우, 지속적으로 모니터링이 되어 해당 컴포넌트 간의 의존관계가 비즈니스적인 의미가 있게 구성되어야 한다. 따라서, 이를 위해서는 당연히 데이터에 대한 ownership 문제가 제기되지 않을 수 없으니, 논리적인 데이터 모델 뿐만 아니라, 물리적으로 무결성을 위해서 테이블 간에 많은 FK를 통해 연결된 데이터베이스 구조의 성격상 ownership을 나누기는 여간 불편한게 아닐게다. 컴포넌트의 의존관계를 관리할 수 있는 수준이라면, 당연히 데이터의 ownership을 지정하여 관리하도..

반응형