전체 글 1274

프로와 아마추어의 차이

프로는 불을 피우고, 아마추어는 불을 쬔다. 프로는 자신이 한 일에 대해 책임을 지지만, 아마추어는 책임을 회피하려고 급급한다. 프로는 기회가 오면 우선 잡고 보지만, 아마추어는 생각만 하다 기회를 놓친다. 프로는 돌다리도 두드리고 건너지만, 아마추어는 두드리고도 안 건넌다. 프로는 자신의 일에 목숨을 걸지만, 아마추어는 자신 일에 변명을 건다. 프로는 여행가이고, 아마추어는 관광객이다. 프로는 남의 말을 잘 들어주고, 아마추어는 자기 이야기만 한다. 프로의 하루는 25시간이지만, 아마추어의 하루는 24시간뿐이다. 프로는 뚜렷한 목표가 있지만, 아마추어는 목표가 없다. 프로는 행동을 보여 주고, 아마추어는 말로 보여준다. 프로는 너도 살고 나도 살자고 하지만, 아마추어는 너 죽고 나 죽자고 한다. 프로는..

What is SOA? How to SOA?

컴퓨터 시스템이 사용되면서부터, 각 시대의 기업 전략에 맞는 소프트웨어 아키텍쳐 존재하여 왔다. 초기 시대의 메인프레임에서는 기업의 업무를 전산화 하는데 목적이 맞춰졌고, 소프트웨어는 구조적 프로그래밍 (Structured Programming)으로 개발되었다. 그 후 개인 PC가 도입되면서 클라이언트 서버 시대 아키텍쳐가 도입되었고, 근래의 인터넷과 e비지니스 시대에서는EJB나 COM을 기반으로하는 컴포넌트 기반의 개발이 중심이 되었다. 그리고 지금의 IT 시스템들은 비즈니스의 급격한 변화를 수용할 수 있는 민첩성이 요구 되게 되었고, 이 요구를 충족시키기 위한 아키텍쳐가 서비스 지향 아키텍쳐 SOA 이다. 이번 강좌에서는 SOA가 무엇이고 어떻게 SOA를 진행할지에 대해서 간략히 살펴보도록 한다. 1..

아키텍쳐 /SOA 2007.09.04

SOA & Agile

예전 정리했던 글 == 요즘 읽는 책들이 XP,조엘온소프트웨어,대한민국에는 소프트웨어가 없다, 소프트웨어 프로젝트 생존 전략,TDD 주로 소프트웨어 프로젝트 방법론에 대한 책들이다. (지금은 생존전략을 읽는중이다. TDD는 사놓고 대충만 보고.. 다시 봐야 할텐데..) 접근 하는 방식은 틀리지만, 변경 관리, Short release,단계적 개발 모델, 개발자에 대한 배려 사용자 참여,등등. 결과적으로 이야기 하는 내용은 틀리지 않다. 근데 여기에 왜 Governace 이야기를 들고 나왔냐 하면, Governace도 결국 따지고 보면 소프트웨어 프로젝트 관리 방법론이고 뚜껑을 열어보면 위에서 설명하고 있는 내용들을 약간 더 서비스 개념에 맞게 포장해놓은것 뿐이고 같은 내용이라고 보인다. 결국에는 사람들이..

아키텍쳐 /SOA 2007.09.04

요즘 개발의 트렌드

요즘 개발의 트렌드는 무었을까? 예전에는 JAVA vs .NET, EJB, J2EE등이 유행하다가 Struts,Webwork과 같은 MVC에서, IBatis,Hibernate와 같은 OR Mapper가 판치더니 Spring등을 위주로한 Open source에서 이제는 그것마져 시들해지는 것 같고.. 요즘은 방법론으로 떠들석하다. XP,Agile같이 정통 방법론에 반대하는 빠르고 컴팩트한 방법론들이 대두되고 있고, Test중심의 TDD가 나오더니, Pragmatic시리즈들이 난무 하면서 형상관리,단위테스트,빌드 자동화에 대한 관심들이 높아진다. 오늘은 블로그를 보니 Lean이란 방법론에 대해서 소개를 하고 있더라. (http://www.wgshim.com/tt/entry/%EC%B6%9C%EA%B0%84-..

Unit Testing WebLogic Workshop 8.1 Applications & JWebUnit

JCS,JPF,JCX등에 대한 테스트 방법 http://dev2dev.bea.com/pub/a/2004/12/eckels_BP.html 아래는 JWebUnit이다. HttpUnit의 확장판인데. 특히나 assert 메서드들이 흥미롭다. 예를 들어 assertTextPresent("Hello World!"); assertTextInElement("attributeOne", pretendObject.getAttributeOne()); 위의 둘처럼 response HTML을 모두 무식(?)하게 테스트 하는 것이 아니라 어떤 Text가 있는지, 내지는 Element내에 있는 Text를 검색함으로써 좀더 resonable한 테스트가 가능하다. 통채로 HttpResponse를 테스트 한다면, 디자인이 (CSS,Ja..

ALM/Test Automation 2007.08.27

EJOSA (Enterprise Java Open Source Architecture)

진짜 별게 다 나온다. 오픈 소스가 많이 발전하고, 이제 J2EE 급의 각종 오픈소스 프레임웍들이 나오더니.. 이런것에 대한 통합과 정리의 필요성을 생각하고 있었는데. 실제로 Spring의 경우는 오픈소스들의 컨테이너와 같은 역할을 하면서 수많은 커넥터 들을 만들어 내고 있었다. 그런데 왠걸? SourceForge에서 EJSOA로 Enterprise용 Java Open Source 아키텍쳐를 내 놓았다. 얼마나 실용적일까는 두고봐야할 일이지만, 상용 J2EE 벤더 입장에서는 그리 반갑지 않은 오픈소스가 아닐까 싶다. 이대로 가다가는 상용벤더들은 Middleware보다는 솔루션과 컨설팅등에 집중해야 하지 않을까? 다음은 EJOSA 관련 자료들에 대한 링크 http://blog.naver.com/comsna..

DBUnit 예제

데이타베이스에 대한 테스트를 할 수 있는 DBUnit에 대한 샘플 코드. DBUnit은 DataBaseConnection을 JDBCDriver,JNDI,DataSource등에서 얻어올 수 있다. 아래 예제는 JDBCDriver에서 얻어오는 예제 테스트 절차는 다음과 같다. 1) setUp메서드에서 데이타베이스를 테스트전으로 초기화 하고, (이때, XML파일을 이용해서 초기 데이타를 로딩할 수 있다.) 2) 테스트할 OBJECT를 수행한후 3) 테스트 기대 결과를XML에서 읽은후에 4) 데이타베이스의 기록 상태를 3)과 비교한다. 참고로 1)의 데이타는 테스트케이스에서 자동으로 XML 파일로Generation하거나 DTD를 생성할 수 있다. 참고 : http://www.onjava.com/pub/a/onj..

ALM/Test Automation 2007.08.27

단위 성능 테스트

성능 테스트 역시 매우 중요한데, 성능 테스트는 외부적인 요인 (하드웨어 성능, DBMS의 정렬 상태, 네트워크 상태, 다른 AP에 의한 CPU 사용률의 차이)로 인해서 사실 정확한 측정을 하기란 어렵다. JUnit에서 Timer 객체를 이용해서, elapsed time을 측정할 수 도 있지만. JUnit의 확장으로 성능 테스팅을 할 수 있는 것이 http://www.clarkware.com/software/JUnitPerf.html 있다.

ALM/Test Automation 2007.08.24

단위 테스트 방법

단위 테스트 방법중에서. 특히나 J2EE의 경우에는 컨테이너를 필요로 한다. 컨테이너가 없다면 EJB나 JSP등은 구동조차 하지 않을테니까는. 이를 위한 테스트 방법이 2가지가 있는데, ○ Mock test ○ In-container test 두가지이다. Mock Test는 Container를 시뮬레이션 하는 테스트이고, In container test는 실제 컨테이너에서 테스트 하는 방법으로 JUnit을 확장한 Catcus라는 테스트 프레임웍을 사용하면된다. Apache에서 제공하는 Catcus 테스트는 크게, Servlet,JSP,Filter,Tag Lib, Struts등의 테스트가 가능하고, 자세한 정보는 http://www.apache-korea.org/cactus/writing/howto_jsp..

ALM/Test Automation 2007.08.24

테스트의 종류

여러 분류가 있겠지만 ○ 단위 테스트 (Unit Test) 단위 컴포넌트의 기능이 잘 수행되는지만 체크한다. 프로그래머가 기대한데로, 단위 컴포넌트가 제대로 작동하는지만 체크할 뿐, 그것이 성능이나 장애에 대한 대처 능력이 있는지 또는 고객의 요구 사항에 부합하는지와는 상관 없이 컴포넌트 자체만 테스트한다. ○ 통합 테스트 (Integration Test) ○ 수락 테스트 (Acceptance Test) 고객의 요구 사항에 부합하는지에 대한 테스트를 수행한다. 기능 테스트는 당연하고, 성능 테스트 (Performance Test), 장애 테스트 (Failure Test) 등을 수행하게 된다.

ALM/Test Automation 2007.08.24

아이언 세트..

몬가를 시작하면 장비병이 도지는것은 어쩔 수 없나보다. 골프 클럽은 연말에나 구입할 생각이지만.. 그전에 클럽을 얻어 쓰거나 중고 클럽을 사용하는 것을 진지하게 고민중이다. 워낙 고가이다 보니 몸에 안맞는것 샀다가 고생할 수 도 있고.. 클럽을 피팅한다는 이야기도 들었기에 심사 숙고해야할듯 유력선상에 올라있는것이 미즈노 MX-25나 JPX인데... 기회있을때 시타라도 한번(시타 할 솜씨나 되나?)해봐야 겠다.

평가의 방법

오늘 인턴 사원 평가를 했다. 예전 팀장 시절에는 체계가 없어서 제대로된 평가를 한적이 없었는데. 오늘은 인턴사원이지만 평가를 하면서 시니어로써의 무게를 느껴봤다. 하나 얻은 교훈은 "피드백을 할때, 좋은 것을 80%, 나쁜것을 20%" 이야기 하라는 것이다. 맞는말인지, 의미는 잘 모르겠지만, 예전에 내가 평가를 받을때의 느낌을 생각해보면 맞는 말 같다. 사실 피드백에서 나쁜점들이 50%이상 나온다면, 이미 그 사람은 회사에서 존재하기 어려운 사람이 아닐까? '칭찬은 고래도 춤추게 한다'고, 업적을 찬양해서 일할 수 있는 동기를 부여하고, 부족한점은 메꿔 나가게 하는것이 메니져로써의 역할이 아닐까?

EAI 도입 전략

한국 소프트웨어 진흥원 부탁으로 써줬던 기고인데, EAI의 도입 전략에 대해서 설명했던 글이다. == Introduction strategy of EAI 2006년 7월 5일 자바스터디 네트워크 (http://www.javastudy.co.kr) 조대협 (bcho@bea.com) 1. 왜 EAI 가 필요한가? 전통적으로 기업의 애플리케이션들의 개발은 각 부서의 업무나 특정 업무의 요구 사항에 맞춰서 필요한 시기에 전사적인 기업 업무나 기존의 IT 시스템에 대한 고려 없이 독립적으로 개발되었다. 즉, 고객 관리를 위해서 CRM이 개발이 되었고, 경영자의 데이터 분석을 위해서 DW 시스템이 개발이 되었고, 기업 내부의 전산화를 위해 그룹 웨어가 개발이 되었다. 이런 각각의 애플리케이션의 개발은 개발 당시의 ..

아키텍쳐 /EAI 2007.08.21

Java Application의 Locking 처리문제

Java AP에서 Locking처리 방법은 Synchronized 를 사용하는 방법이 대표적인데 이 경우에는 하나의 JVM Instance 내에서만 동기화 처리가 가능하다. 시스템을 설계할때, 다중 인스턴스 구조의 부하 분산 환경을 고려한다면, 인스턴스내의 Locking 처리인지 아니면 인스턴스간의 Locking처리가 필요한지를 먼저 결정해야 하고, 인스턴스간의 Locking처리인 경우에는 DB나 아니면 기타 (RMI,JMS등) 방법을 사용하는 방식이 있다. 특히 DB의 Lock 처리 메커니즘을 생각할때 고려할 부분은 보통 다음과 같은 구조로 만드는 경우가 많다. 1: select LOCK 2: if( unlocked){ 3: update set LOCK 4: }else { return "Lock이 걸려..

About SOA

2007년 7월 6일 포스팅 글 == 이번에도 SOA기고를 하나 하긴 했는데. 맨날 했던 말이 그말인것같다. 한번 더 고민 한점이 있다면 한국에서만 유달리 SOA가 전파되지 않는다는 것이다. 근래의 N社에 입사해서 시스템들의 구성들을 이야기 들어보면, SOA의 필요성이 인식이된다. 비단 Enterprise만이 아니라 service업체에서도 개개의 서비스들을 XML형식으로 통신하는 구조가 많이 있는데, 중앙에서 통제되지 않고, XML-RPC, WebService, XML-HTTP 등등 프로토콜이 각각이고 Granuality도 각각이며, UDDI와 같은 Dictionary도 없는것 같다. 흔히들 말하는 공통 서비스들이 그것이 될테인데. 이미 SOA의 1차적 개념을 가지고 접근을 하고 있으나 SOA적인 접근을..

아키텍쳐 /SOA 2007.08.20

SOA에 대한 기술적 접근

월간 마이크로소프트웨어 2007년 7월호 기고 내용 == “ SOA는 무엇이고, SOA를 준비하기 위해서 무엇을 해야 할까? 그리고 SOA 시스템을 구축하기 위해서는 어떤 기술을 준비해야 할까 ? ” 수년간 많은 벤더와 매체를 통해서 SOA라는 단어를 들어보고, 웹서비스, ESB, BPM, Governance와 같이 SOA와 관련된 주요 키워드들에 대해서 접해왔을 것이다. 그러나 정작 시스템을 어떻게 SOA화 해야하는지 심한 경우에 SOA 자체가 무엇인지 조차 이해하지 못하는 경우도 많다. 이 글에서는 SOA의 올바른 이해와 함께, SOA 시스템 구축에 용이한 기술에 대해서 알아보도록 하겠다. SOA란 무엇인가? SOA란, 기존의 애플리케이션들의 기능들을 비즈니스적인 의미를 가지는 기능 단위로 묶어서 표..

아키텍쳐 /SOA 2007.08.20