Search Results for '소프트웨어 아키텍처'


1 POSTS

  1. 2006|09 SW 아키텍트로 가기 위한 필독서들... by maceo

SW 아키텍트로 가기 위한 필독서들...

사실 아직 일천한 수준이긴 한데... SW 아키텍트로 가기 위해서는 기본적으로 뭘 봐야할지에 대해서 한번 정리를 하고 싶어졌다. 일단은 개발을 잘해야겠지? 설계도 잘해야겠고. 그런데 개발/설계를 잘 한다함은 특정 플랫폼에 종속되는 것이 아니라 어떤 플랫폼이더라도 통용될 수 있을 정도로 잘해야 한다는 것을 의미한다. 이런 능력을 기르는데 필독서는 다음 두권이다.

GOF의 디자인 패턴  Erich Gamma 외 지음, 김정아 옮김
이 책은 디자인패턴과 보다 효과적인 객체지향 프로그래밍에 관심이 있는 개발자들을 위한다. 책을 읽기위해서는 자바나 C++과 같은 객체지향 언어에 어느정도 익숙해져야 한다. 디자인 패턴 자체가 보다 재사용가능하고 유지보수가 쉬운 객체지향 프로그래밍 구현을 목적으로 하고 있기 때문에 기본적인 이해는 필수적이다.
Refactoring - 기존 코드의 디자인을 개선하는 방법  Martin Fowler 지음, 윤성준.조재박 옮김
리팩토링은 소프트웨어의 외부 기능을 변경하지 않으면서 내부 구조를 바꾸는 기술이다. 리팩토링을 사용하면 나쁜 디자인의 코드를 취해서, 외부 기능을 변경하지 않고, 좋은 디자인의 코드로 바꿀 수 있다. 따라서 리팩토링을 이용하면 처음부터 미리 모든 경우에 대해 고민하고, 필요할지 확실하지도 않은 유연성을 소프트웨어에 주기 위해 비용을 낭비할 필요가 없다.

개발할 때 아주 중요한 것이 절차지향, 객체지향, 집합지향 패러다임에 모두 익숙해지는 것이다. 분야에 따라서 객체지향이 필요없는 곳도 있고 집합지향이 필요없는 곳도 있다. 하지만 일반적인 웹개발에서는 세가지 모두에 능숙할 필요가 있다. 개인적인 경험으로는, 객체지향 패러다임으로의 전환이 가장 힘들다. 특정 문제 상황을 객체지향적으로 해결하는 것은 인간의 상식적인 사고를 많이 벗어난다는 느낌을 가지고 있다. (절차지향이 가장 상식적) 그래서 C++이나 Java나 C#으로 개발을 해도 옛날의 C코드와 똑같은 코드가 나와버리고 if-else 의 미로가 생기는 것이다.

이런 상황을 탈피하기 위한 첫걸음이 위의 두 책이 되겠다. 01년인가 원서로 두 책을 모두 읽었는데, 그야말로 대충격이었다. 일단 디자인 패턴책은 상당히 이해하기 어려웠다. 하지만 리팩토링책은 아주아주 쉽고 재밌었으며 실용적이었다. 특히 리팩토링 2장에서 아주 일반적인 절차지향 로직이 리팩토링 기법을 통해서 슬금슬금 아주 깔끔한 객체지향 코드로 변해가는 과정이 아주 충격적이었다. 이 책에 나오는 수많은 예제를 통해서 내가 그동안 얼마나 엄청난 스파게티를 만들어 왔는지 반성할 수 있었다.

디자인 패턴은 특정 문제상황을 객체지향적으로 설계해서 해결하는 훌륭한 생각의 단초를 제공해준다. 한마디로 객체지향 패러다임으로 전환하는데 아주 도움이 많이 된다. 물론 쉽지 않다. 기존의 사고의 틀을 깨야 하므로... 하지만 반드시 필요하다. 패턴에 감을 잡으면 개발속도도 빨라지고 버그도 적어진다.

위의 두 책을 본 후에는 다음 책을 보면 좋을 것 같다.
 엔터프라이즈 애플리케이션 아키텍처 패턴  마틴 파울러 지음, 송대국 옮김

이 책은 큰 규모의 웹서비스를 구성할 때 전체 아키텍쳐를 어떻게 잡아야 할지 가이드 라인을 제시해준다. 사실 이 책에서 권고하는대로 사이트를 구성하기는 좀 힘들다. 개발자들이 모두 패턴에 대해 전문가 수준이 되어야 하기 때문이다. 하지만 아키텍쳐의 큰 효과중의 하나가 개발자들간의 커뮤니케이션의 효율화임을 생각해본다면 위의 책을 보고 전체 아키텍쳐를 고민해보는 과정이 반드시 필요하다.

사실 위의 책 이전에 Pattern Oriented Software Architecure 1권을 봐두는게 좋다. 이 책에는 XP에서 말하는 메타포 수준의 아키텍쳐가 수백페이지에 걸쳐서 나와있다. (알라딘에 없다. 국내에 없다. 아마존으로 가야함) 아키텍쳐 스타일이라고도 부른다. 이 책의 장점이라면, 웹사이트뿐만 아니라 특정 영역의 솔루션을 개발할 때 기본적인 설계도를 제공해준다는데 있다. 엔터프라이즈 애플리케이션 아키텍쳐 패턴은 웹사이트가 레이어드 아키텍쳐로 개발된다는 것을 전제로 레이어 안의 설계를 위해서 어떻게 해야 하는지에 대한 지침을 제공한다면, POSA 1권은 그거 보다 좀 더 큰 수준, 레이어 아키텍쳐니 MVC니 파이프&필터니 블랙보드, 퍼블리쉬&서브스크라이브니 하는 패턴들이 나온다. 그 유명한 MVC도 사실 POSA 1권에 나오는 하나의 패턴에 불과하다. 이정도로 큰 규모의 패턴들을 다루는게 POSA 1권이다. 게다가 디자인 패턴책처럼 각 패턴의 말미에 어떤 솔루션을 개발할 때 사용되었다는 간략한 코멘트도 나온다. 옛날에 ETL툴 개발할 떄 이책에 나온 파이프&필터 아키텍쳐에서 핵심 아이디어를 얻었다. 가장 중요한 것을 해결하고 나니 그 뒤로는 상세설계&개발이 비교적 수월하게 풀려나간 경험이 있다. 물론 확장성/유연성도 아주 좋았다.

만약 당신이 네트웍 개발에 종사하고 있다고 하자. 네트웍 서버를 만들어야 하는데... 그렇다면 다음 책을 보면 된다.
C++ Network Programming Volume 1 - ACE와 패턴을 사용한 객체지향 네트워크 프로그래밍  더글라스 슈미츠 외 지음, 곽용재 옮김
수많은 하드웨어 플랫폼과 운영체제상에서 쓸 수 있도록 연구, 개발된 네트워킹 오픈소스 프레임워크 ACE(Adaptive Communication Environment)를 사용한 프로그래밍 방법을 알려주는 책으로, 복잡한 분산 시스템을 개발하고 최적화하기 위한 실용적인 해결책을 제시한다.
C++ Network Programming Volume 2 - ACE와 프레임워크를 이용한 체계적인 재사용 기법  더글라스 슈미츠 외 지음, 곽용재 외 옮김
<C++ Network Programming Volume 1>에서 네트워크 처리 기초 구성 요소인 ACE와 ACE Wrapper Facade 클래스에 대해서 소개했다면, 이번 Volume 2에서는 상위수준의 통신 서비스를 제공하기 위해 Wrapper Facade 위에 프레임워크를 어떻게 구축하는 가를 설명한다.

사실 위의 책은 Pattern Oriented Software Architecture 2권을 좀 더 친절하게 풀어쓴 것에 불과하다. 하지만 POSA 2권이 울나라에 없으니..-_-;;; POSA 2권은 위 두 책의 저자가 ACE 프레임웍을 만들면서 생각해낸 각종 네트웍 개발에 관한 패턴들을 담고 있다. ACE 프레임웍은 유닉스/윈도우에서 모두 돌아가는 비동기 통신 프레임웍이다. 나온지는 꽤 되었는데 한국에는 작년쯤부터 쓰이기 시작했다. 유닉스/윈도우의 시스템 콜을 모두 래핑해서 플랫폼 독립적인 코드가 돌도록 해준다. 이 프레임웍은 플랫폼 독립적인 메모리, IO, 소켓, 데이터타입등을 자체 제공한다. C++이라 매우 빠르다. 2002년에 ETL툴 만들때 이거를 처음 접했으니 그당시에 한국에서는 거의 처음이지 않았을까 싶다. 그때 ACE프레임웍 원저자랑 이멜 주고받으면서 버그도 잡고 그랬는데. 울팀 서버개발자들이 엄청난 천재들이어서 가능한 일이 아니었나 싶다. (난 ACE가지고 직접 개발은 못해보고 공부만 대충...)

위의 책들을 공부하고 나면 어떤 시스템이던 대략 감잡고 큰 설계를 해낼 수가 있다. 물론 OS나 DBMS를 만드는 수준까지야 힘들겠지만, 그 바로 위의 시스템 소프트웨어들, TP모니터나 웹서버, WAS서버등은 설계가능 할 것이고... 웹사이트나 각종 솔루션 설계는 상당히 쉽게 해낼 수 있을거라고 생각한다.

사실 위의 책들은 어디까지나 SW아키텍쳐에 국한한 얘기고 이거 이후에는 데이터 아키텍쳐(전사 데이터 모델링, 튜닝, 데이터 품질관리 등등의 이슈가 있다), 시스템 아키텍쳐(인프라에 해당하는 기계들 구성하고 배치하는 쪽일걸? 잘 모른다) 등등을 통달하면 엔터프라이즈 아키텍트라 이름붙일만 할 것이다. 이 수준까지 가면 미국같으면 연봉 10만달러 우습겠지만 한국에선 솔직히 잘 모르겠다. ㅎㅎㅎ

Posted by maceo

09 22, 2006 01:19 09 22, 2006 01:19
, , , , ,
Response
No Trackback , No Comment
RSS :
http://merritt.co.kr/tt/rss/response/70


블로그 이미지

가늘어도 긴놈이 장땡

- maceo

Archives

Authors

  1. maceo

Calendar

«   9 2010   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    

Site Stats

Total hits:
179883
Today:
2
Yesterday:
35