토비의 스프링 3 - 
| 고객 이탈방지(lock-in) 전술 |
핵심 수단 |
극복책 |
| Technology-based lock-in | compelling technology | 기술 모방 |
| Data-based lock-in | 데이터 Migration 장벽 |
Migration 도구 제공 |
Any organization contemplating moving applications to the cloud needs to consider how it wants to deal with this sort of lock-in risk.
출처: Thoughts on cloud portability![]() |
클라우드의 충격 - ![]() 시로타 마코토 지음, 진명조 옮김/제이펍 |
| 그리드 컴퓨팅 | 클라우드 컴퓨팅 | |
| 컴퓨터 위치와 관리주체 | 지리적으로 분산되어 있고, 각기 다른 조직이 관리 | 지리적으로 분산되어 있지만, 중앙에서 단일 조직이 관리 |
| 컴퓨터 구성 | 이기종 혼재 | 동일기종이 많음 |
| 표준화 단체 | 존재 | 존재하지 않음 |
| 기술표준 | 리소스 관리나 스케줄링, 테이더 관리, 보안 등의 기술표준이 존재 | 특별히 없음 |
| 상호 접속성 | 중시 | 고려되지 않음 |
| 용도 | 과학기술 계산, 대규모 연산처리 등 병렬성이 높은 애플리케이션 | 과학기술적 계산 등과 함께 웹 애플리케이션 등 광범위한 용도로 이용 가능 |
![]() |
클라우드의 충격 - ![]() 시로타 마코토 지음, 진명조 옮김/제이펍 |
POST /users HTTP/1.1
Host: myserver
Content-Type: application/xml
<?xml version="1.0"?>
<user>
<name>Robert</name>
</user>
PUT /users/Robert HTTP/1.1
Host: myserver
Content-Type: application/xml
<?xml version="1.0"?>
<user>
<name>Bob</name>
</user>


http://www.myservice.org/discussion/topics/{topichttp://www.myservice.org/discussion/2008/12/10/{topic} a.k.a http://www.myservice.org/discussion/{year}/{day}/{month}/{topic}![]() |
토비의 스프링 3 - ![]() 이일민 지음/에이콘출판 |
역시 술김에 사심 가득한 홍보성 글을 올립니다. 사랑(?)하는 토비 형이 지난 일년간 연 수입의 9/10를 손해 보면서 화끈하게 투자한 책이 다음 달에 나오네요. 앞으로 다시는 저술이나 번역을 안하겠다고 할 만큼 심혈을 기울인 책입니다. 화공과 출신이라 그런지 몰라도 1장은 조금 지루하지만 로드 존슨(Rod Johnson)도 한글을 안다면 인정할만한 책이 아닌가 합니다. 물론, 지금 술김이지만, 추천합니다.
특히나 DI(Dependency Injection) 설명을 위한 초난감 DAO 개선 절차는 이 책의 꽃입니다. 물론, 실무 수준에서는 2부의 엑기스 중심 정리가 더욱 도움이 되겠지만 말이죠... 쩝... 암튼 형 대단해. 2006년 일면식도 없는데 까칠하게 블로그에 태클 단 일 이해해줄께. 다음에 서울 오면 오룡해삼 쏴~




![]() |
테스트 주도 개발 - ![]() 채수원 지음/한빛미디어 |


![]() |
UML 실전 활용 테크닉 - ![]() 그래디 부치 외 지음, 임춘봉 외 옮김/케이앤피북스 |
![]() |
인생사용설명서 - ![]() 김홍신 지음/해냄 |
![]() |
캉디드 - ![]() 볼테르/을유문화사 |
‘스티브 잡스처럼 되려면 개발자 아닌 아키텍트의 길을 가라’라는 기사가 있다. 이 기사뿐 아니라 인터넷에 올라온 의견을 보면 개발자와 아키텍트를 대결 구도로 쓴 내용이 많다. 이분법으로 개발자와 아키텍트를 나누는 일에 대해 유익한 점과 그렇지 않은 점에 대해 이야기를 꺼내 보려고 한다. 우선 양분해서 이로운 점은 무엇일까? 개발자와 아키텍트가 다루는 문제 사이에는 분명 다른 면이 있다. 넓은 의미에서 개발자가 아키텍트를 포함한다고 생각하지만, 일반적으로 개발자라고 하면 코드수준에서 고민해야 한다. 당면 과제가 돌아가는 코드와 눈에 보이는 화면이기 때문에 개발자는 미세한 문제까지 고민한다. if 문의 미묘한 차이에 따라 프로그램은 완전히 다르게 동작하고 UI 컴포넌트가 어떤 화면의 어느 위치에 존재하느냐에 따라 사용자는 전혀 다른 프로그램을 만나기 때문이다. 그래서 개발하려는 프로그램이 커지면 모두가 ‘세세한 내용까지 관심을 두는’ 개발자여서는 곤란하다. 누군가는 세세한 의견을 조율하고, 성격이 다른 코드 조각을 엮어내는 조정자가 필요하다. 그 사람은 개발자 사이에서 조정할 수도 있고, 개발자와 사용자 사이에서 중재하기도 한다. 또, 같은 사용자라고 해도 모든 사용자마다 다른 화면을 제공할 수 없어서 사용자 역할에 따라 적절한 무리를 만들고, 요구사항을 수렴하여 평균적인 화면과 기능으로 합의를 이끌어야 한다. 이처럼 일반적인 개발자와는 구분되는 시각과 역할을 가진 이가 필요하고, 아키텍트란 이름이 흔히 쓰인다.
그렇다면 이들의 구분이 유익하지 않은 경우는 무엇일까? ‘구분 짓는 행위’는 일종의 생각하는 기법이다. 앞서의 구분이 서로 다른 역할의 필요성을 드러내기 위함이었는데, 간혹 개발자와 아키텍트를 나누는 글의 바탕에 ‘직업의 귀천’을 깔아두는 내용을 발견한다. 인용한 글에서도 아키텍트의 중요성을 부각하기 위해 ‘단순 용역을 담당하는 개발자’라는 표현을 사용했다. 나는 아키텍트 양성이 중요하다는 말에 왠지 거부감을 느낀다. 그렇다면 개발자 양성은 중요하지 않은가? 설마 우리 곁에 훌륭한 개발자가 많아서 아키텍트가 필요하다 생각하는가? 내 경험으로는 과거 아키텍트 양성(?) 효과인지 훌륭한 개발자는 부족한데 반해 피상적인 지식을 갖춘 아키텍트는 부족하지 않았다. BA나 AA라고 하지만 일반적인 업무처리만 생각하고 수년 혹은 수십 년간 이어온 고객사의 특수성에 대한 분석은 내 일이 아니라는 사람, DA라고 하지만 실상은 단일 DBMS를 위한 DB 모델링 외엔 이야기를 나누기 어려운 사람, TA라고 하지만 타겟 프로그램이 웹 환경인데 웹에 대해서는 잘 모르는 사람을 만날 수 있다.
교육 사업을 하는 사람이 ‘아키텍트를 키워야 한다’고 주장하는 경우를 흔히 본다. 분명히 아키텍트를 키우는 일은 의미 있는 일이고, 반드시 교육이 필요하다. 그러나 과연 아키텍트 교육이 개발자 교육과 구분해서 다룰 문제인가? 그리고 우리 사회에서 개발자 교육은 충분히 존재하는가? 대학 교육은 실무와 엄청난 거리감이 있다. 그나마 존재하는 학원이나 교육기관이 초보적인 기술 교육을 제공하지만, 다음 단계를 나아가려고 하면 교육 프로그램을 찾기 어렵다. 아키텍트 교육은 성격상 MBA 과정처럼 사례 연구 형태가 적합하다고 생각한다. 현장에서 쓰이는 상세 기술과 설계 기법에 대한 일반화도 되어 있지 않은 상태에서 서로 다른 경험치를 가진 참가자 사이에서 충분한 소통이 가능할까? 설사 그렇게 아키텍트를 양성했다고 해도 그들이 그려내는 그림을 실현할 준비된 개발자는 충분한가?
요즘 홍세화님의 책을 읽으며 사회나 연대(連帶)에 대해 배웠다. ‘개발자니까 이런 부분이 약해.’라는 식으로 합리화를 해보지만 꽤 늦었다는 생각을 지울 수 없다. 그렇지만, 한편으론 인식하지 못했을 뿐 스스로 개발자 커뮤니티 활동을 하며 연대를 시도해왔고 현재도 그렇게 하고 있다. 다만, 뚜렷한 지향점이 없으니 노력에 비해 효과가 적었다.
개발자 커뮤니티 다시 생각하기
보통 개발자 커뮤니티 하면 JCO나 데브피아 등을 떠올리는 사람이 많다. 나 역시 그 중 한 사람이었다. 하지만, 커뮤니티(community)라 함은 공동체를 의미할 뿐이다. 형태가 분명하지 않아도 빈번하게 만나는 무리가 있다면 커뮤니티라 할 수 있고, 트위터 팔로우나 블로그 구독을 통해 만들어지는 소셜 네트워크의 일부도 커뮤니티라 할 수 있다. ‘자바 개발자 전체 자바 개발자 커뮤니티로 볼 수도 있지 않을까?’ 하는 생각을 떠올려봤지만, 공동체로 공유하는 부분이 명확하지 않았다. 그렇다면, 커뮤니티의 경계를 구분하는 기준은 무엇일까? 예전에 KSUG(한국스프링사용자모임)를 운영할 때 협찬을 하는 과정에서 회원 수를 물으면 포럼 가입자 수로 대답했다. 가입자 수가 큰 의미가 있을까? 그리고 보니 이일민씨가 오래 전 KSUG 블로그에 올렸던 ‘KSUG는 커뮤니티인가’란 글이 떠오른다.
진정한 커뮤니티는 구성원 상호간의 (좀 비율에 있어서 균형적이지 않더라도) 상호 흐름이 있어야 한다. 한쪽에서 정보를 제공하면, 다른 쪽에서 피드백이 오고, 또는 자신이 알고 있는 또 다른 정보를 꺼내놓아야 한다. 제공자이면서
수혜자여야만 커뮤니티로서 생명력이 있는 것이다.
인용 1. ‘KSUG는 커뮤니티인가’ 중에서
공동의 가치
공감할만한 글이다. 그러나, 인용한 내용만 보아선 무엇에 대한 제공자와 수혜자인지를 알 수 없다. 이 부분에서 다시 연대를 떠올릴 수 있다. 자주 쓰는 말이 아니라 사전을 찾아보니 ‘특정한 가치의 실현을 위해 행동을 같이 하거나 뜻을 함께하는 행위’라고 한다. 함께 모여서 실현하려는 가치를 중심으로 모여서 기여하고 공유하는 집단이 있다면 커뮤니티라고 할 수 있다. 과연 우리가 개발자 커뮤니티라고 부르는 집단이 명확한 가치를 지향하고 있을까? 또, 충분히 가치를 실현하고 있을까? 양수열씨가 JCO 회장시절을 회상하며 무보수 야근이 일상인 개발자 처우 개선을 위해 당시 정부인사와 만나 논의했던 이야기를 해주었을 때 깜짝 놀랐다. 이런 일을 하는 사람이 있구나 하는 생각에 놀랐고, 왜 우리는 스스로의 환경을 개선하기 위해 노력하지 않을까 반성이 있었다.
실효성을 고려한 실천
기관 주도하에 연차로 개발자 가치를 산정하는 일을 지켜보면서 다시 커뮤니티를 떠올렸다. 온라인 커뮤니티를 말하는 것이 아니다. 적절한 기준이 아니라고 불평할 시간과 노력으로 개선을 시도하는데 쏟을 수 있다. 해보지도 않고 ‘그게 가능하냐?’라고 회의적으로 말하는 이도 많다. 솔직히 회의적인 생각이 든다. 그렇지만, 요리조리 궁리를 해본다. 실효성이 있는 실천 방안과 함께 할 무리 즉, 커뮤니티를 찾아 행동을 같이 할 수 있는 방법을 찾기 위해서…