'서버프로그래머'에 해당되는 글 1건

  1. 2011.04.25 후배 개발자들이 헤쳐나가야 할 산들 2
반응형
처음 회사에 들어와서  Java 프로그래밍을 배우겠지..
개발환경은 Eclipse.. 이 툴은 좀 어렵군.. 그래도 한 번 세팅하면 편해.
그러다 어느 정도 API 에 익숙해 지면 Thread 라는 것을 배울거야.
하지만 속으로 이렇게 생각하겠지. '이걸 어디다 써먹어? 먹지도 못하는 것.'
남들이 만들어 놓은 프로그램 유지보수를 하면서 JSP 라는 것을 배우지.
서버단은 Spring 으로 되어 있네? 그러면서 도메인은 EJB3를 쓰고.
원리도 모르고 왜 쓰는지도 모르겠지만 Spring 문법을 배우고 EJB3 문법도 배우자.
여기서 너희들은 제일 중요한 J2EE SPEC 중에서 Servlet SPEC을 놓치고 넘어가지.
이걸 운좋게 공부할려고 맘먹었으면 6개월은 더 고생해야 돼.
공부하면서 Tomcat과 같은 Servlet Engine의 ClassLoader와 쓰레드의 원리를 알게되지.

1~2년 지나면 Spring 을 쓰다가 알게되는 Design Pattern을 보겠지.
아.. 이런게 있구나.. 하지만 백날 배워봤자 어디다가 응용해야 할지 모르지. 
사실 Design Pattern은 일부를 제외하고 클라이언트 프로그램에 더 잘 맞거든.

어느날 프로그램을 개선하다고 이전의 프로그램이 개판이라는 것을 알게 되지.
그 때 선배가 이야기하는거야. 프로그램을 고칠려면 Refactoring을 해야한다.
Refactoring을 할 때 제일 중요한 것은 안전성.. 그러면서 자연스럽게 Unit Test 를 배우지.
축하해.. 여기까지 공부했으면 이제 한 5년은 지났을 거야.

이제 2갈래로 나눠져야 돼.. 내가 웹 프로그래머로 살지.. 아니면 서버 프로그래머로 살지.
서버 프로그래머로 살려면 네트웍 프로그램을 알아야지..
오픈 소스를 검색하면 MINA가 나올거야. 하지만 Netty가 그 이후 버전이라는거.
기존에 공부한 Design Pattern 덕에 그나마 소스 분석은 가능하지.
Netty 는 JBOSS 커뮤니티에 속해서 Memcached 나 Infinispan 같은 서버 캐시도 관심을 갖게 되겠지.
그러다 어느날 다시 NoSQL 이라는 것을 만날거야.
축하해.. 그럼 요즘 화두가 되고 있는 Clound Computing을 만난거야.
Hadoop 도 있고 HBase도 있고. Thrift, Hive zooKeeper 등등을 만나지..
2억 5천명이 사용하고 있는 FaceBook의 서버 구조도 같다는 것을 만나게 되고. 

또 5년이 흘렀군.. 다행스러운 것은 Clound Computing은 현재라는 거야.
불행한 것은 지금 이글을 보고 있는 초보 개발자는 10년이 지나야 현재의 내 말을 이해한다는 거지.

웹 프로그래머로 살고 싶다고?
그럼 이제는 도메인 모델링이 궁금해 질거야.. 앞에서 공부한 EJB3지.
원리는 뭘까? 궁금하지? 그렇담 마틴파울러가 쓴 Enterprise Application Architecture Pattern이란 책을봐.
6개월을 꾸준히 공부해도 완벽하게 이해 못할테지만.

웹 프로젝트를 하다보면 고객이 이러지.. "내가 말한 시스템이랑 틀린데? 왜 이렇게 만들었어요?"
아.. 절망.. 도대체 고객이 요구하는 게 뭐야?
그걸 뭘 고민해? 먼저 조금씩 만들고 시스템을 자주 보여주면서 그 때 그 때 원하는 것을
수정해서 만들어 가면 되지. Extreme Programming 이라는 것이 그런거야.. 
근데.. 프로젝트를 자주 통합하라네? 어떻게 하지?
우선 소스를 관리해야지..뭐가 좋을까?
Subversion 으로 소스를 관리해. 컴파일은? Ant 나 Maven으로 해야지..
 옛날에 배운 Unit Test 를 써서 프로젝트를 해야지..

어느날 오픈한 시스템이 다운되지. 사용자가 많아서.. 이걸 어째?
Infra 영역인 L4, HA, Clustering 을 공부해야 할거야. 이건 기본이거든.
Queue도 배워야 하고.
아.. 쓰기도 힘들다..

불쌍하다. 후배들아.. 그렇게 공부하고도 아직도 월급과 대우는 그정도라니..
반응형
Posted by seungkyua@gmail.com
,