본문 바로가기

Homo Faber/Techniques

(17)
빌드 시간을 더 빠르게 하라 빌드의 통합은 형상관리도구, 워크스페이스의 소스코드 관리 도구, 배포 바이너리 버전 관리 도구 등을 통해서 상당 부분 자동화를 시킬 수 있다. 빌드는 단순히 형상관리에 있는 소스 코드들을 모두 가지고 와서 실행 파일로 컴파일을 만들어주는 의미만 포함되는 것은 아니다. 물론, 이러한 자동화 역시 전체 소스 코드의 깨짐 현상을 방지할 수 있고, 이를 지속적으로 반복적으로 수행한다면 소스 코드 깨짐 현상에 대한 위험은 줄일 수 있을 것이다. 문제는 전체 소스 코드의 크기가 적고, 어느 정도 인내할 수 있는 시간 동안 빌드를 한다면 괜찮겠지만, 소스 크기가 상당하고 많은 사람들이 만들어내는 소스 코드 (심지어 서로 다른 지역에 있는 사람들이 만들어내는 소스 코드와 같이 빌드하는 경우) 라면 상황이 달라진다. 실..
신중하게 행동하라 - Seb Rose "무엇을 하든지 간에, 신중하게 행동하고 결과를 생각하라" Anon 어떠한 반복주기(iteration)든지 초반에는 일정이 편안하게 느끼게 됩니다. 하지만, 그렇다 할지라도 특정 시간에는 압박 상황을 피할 수는 없습니다. "올바르게 수행할 것"과 "빨리 수행할 것" 사이에서 선택하라고 하면 나중에 수행한 내용을 수정할 것이라는 생각에 "빨리 수행할 것"을 종종 선호하게 됩니다. 여러분 자신과 팀, 고객에게 지금 빨리 수행하고 이후에 수정할 것이라고 약속할 때에는 여러분은 분명 그러한 의도를 가지고 있습니다. 그러나 그 다음 반복주기에서는 새로운 문제가 나타나고 여러분은 이에 몰두하게 되는 일이 비일비재합니다. 이와 같이 지연된 작업과 같은 유형을 기술적인 빚(technical debt..
Spring의 AOP로 구현한 테스트 스파이(Spy) 테스트 스파이는 테스트 더블(double) 의 한 유형으로, 대상 시스템 내의 특정 컴포넌트의 간접적인 결과 호출을 검증하기 위한 장치이다. 즉, 테스트 스파이는 해당 컴포넌트의 행위를 검증하기(behaviour verification) 위한 테스트 장치라고 볼 수 있다. 테스트 스파이는 다음과 같은 상황에서 사용된다. 대상 시스템의 간접적인 결과를 검증하고자 하지만, 사전에 모든 속성의 값들을 예상할 수 없는 경우 Mock 객체를 사용해서 충분하게 예상을 하지 못한다고 생각할때 이를 보여주기 위한 검증을 필요한 경우 동등성 비교와 같은 검증시 단정(assertion) 메소드를 사용해서 제어하지 못하는 경우 테스트 스파이에 대한 구현은 해당 로직을 대상 컴포넌트로 주입을 함으로써 비즈니스 로직 수행 중에..
비즈니스 컴포넌트와 데이터 ownership 비즈니스 컴포넌트의 내부 구조는 레이어드 방식보다는 크로스 레이어드 방식을 선호한다. 그러한 성질로 인해서 컴포넌트 간의 의존관계는 상당히 중요한 정보로써 관리되어야 하며, 이는 컴포넌트 방식으로 중요 비즈니스 로직을 구성할 경우, 지속적으로 모니터링이 되어 해당 컴포넌트 간의 의존관계가 비즈니스적인 의미가 있게 구성되어야 한다. 따라서, 이를 위해서는 당연히 데이터에 대한 ownership 문제가 제기되지 않을 수 없으니, 논리적인 데이터 모델 뿐만 아니라, 물리적으로 무결성을 위해서 테이블 간에 많은 FK를 통해 연결된 데이터베이스 구조의 성격상 ownership을 나누기는 여간 불편한게 아닐게다. 컴포넌트의 의존관계를 관리할 수 있는 수준이라면, 당연히 데이터의 ownership을 지정하여 관리하도..
m2eclipse 설치 개요 m2eclipse 플러그인을 설치하려면, 몇가지 사전 필수 조건이 필요하다. 우선 Eclipse 3.2 이상, JDK 1.4 이상에서 실행해야 하며, Eclipse는 JRE가 아닌 JDK 상에서 실행되는지 확인할 필요가 있다. 일단 Eclipse와 JDK를 설치했다면, 두개의 Eclipse 플러그인인 Subclipse와 Mylyn을 설치해야 한다. 사전 필수 조건 설치 m2eclipse를 설치할 때 사전 필수 도구를 설치하는데, 각각의 사전 필수 컴포넌트에 대해 Eclipse에 원격 업데이트 사이트를 추가하면 된다. 설치하기 위해, Help -> Software Updates -> Find and Install... 로 이동하라.이 메뉴 항목을 선택하면 Install/Update 다이얼로그 상자가 ..
m2eclipse 소개 개요 Eclipse IDE는 오늘날 자바 개발에서 가장 널리 사용되는 IDE이다. Eclipse는 대단히 많은 플러그인들이 가지고 있으며(http://www.eclipseplugincentral.com/ 참조), 셀 수 없이 많은 단체들이 자신들만의 소프트웨어를 만들고 있다. 간단하게 말하자면, Eclipse는 어디나 산재해있는(ubiquitous) 도구이다. m2eclipse 프로젝트는 Eclipse IDE 내에서 Maven에 대한 지원을 제공한다. 이번 장에서는 Eclipse에서 Maven을 사용하는데 도움이 되도록 m2eclipse가 제공하는 기능을 살펴본다. m2eclipse m2eclipse 플러그인 (http://m2eclipse.codehaus.org/)은 Eclipse에 Maven 통합 기..
자바에서 캐싱 솔루션 개요 데이터 캐싱은 자바 애플리케이션에서 매우 중요한 고려사항이다. 데이터 캐싱은 분산 애플리케이션에서 원격 호출의 수를 한정시키고 영구 데이터 저장에 대한 호출 수를 줄임으로써 웹 애플리케이션의 성능을 향상시킨다. 캐싱이 성능을 향상시키고 아키텍처가 실제로 동작하도록 하는데 기여하지만, 사실 설계를 복잡하게 하고 동시성 코드와 클러스터에 대한 동기화와 같은 복잡성을 유발시킬 수도 있다. 일단 데이터 캐싱이 아키텍처의 필요한 부분이라고 결정되었다면, 적합한 캐싱 솔루션을 채택하는 것이 어려울 수 있다. 항상 캐싱 솔루션을 구현하는데 선택사항이 있다. 이러한 접근방법은 분명 장점이 있을 수 있지만, 프로젝트의 비용과 시간에 불가결하게 영향을 미치게 된다. 또 다른 방법은 오픈 소스 캐싱 제품들 중에 하나를..
GRAILS - Eclipse Plugin 사용하기 [2] Grails에서 Eclipse Plugin을 사용하기 위해서 Groovy 사이트에서 플러그인을 다운받음. 위의 그림에서 나타난 Eclipse Udate Site에서 플러그인을 다운받음. ※ 설치시 플러그인 에러 발생시 Groovy TestNG Feature 기능을 제거하고 설치하면 됨. 이클립스 플러그인 설치후 이클립스를 다시 restart 함. Package Explorer에서 import 를 선택하고, Existing Projects into Workspaces를 선택하여, 기존에 만든 hello 프로젝트를 import 함. 프로젝트 import 후 hello 프로젝트는 에러가 나타나는데, GRAILS_HOME 이라는 이클립스 내부 변수명이 설정되지 않아서 나타남. 따라서, hello 프로젝트를 선택..

반응형