본문 바로가기

카테고리 없음

2년차 개발자의 읽은 책 후기 및 지난날을 돌아보며..

이번주면 어느덧 입사한지 만2년차가 된다.
물론 여전히 잘모르고 헤매는 한마리의 어린양이지만
지난날들을 읽은책들을 중심으로 정리하려한다

1. 최범균 - DDD start 2
-> 새로운(?) 아키텍처를 접하면서, 기존에 내가 관리하고 있는 애플리케이션의 아키텍처를 조금더 객관적으로 돌아볼수 있었음.
-> 얄팍하게나마 설명할 수 없는, 개선할 수 없는 우리네 업무코드가 무엇이 문제인지 의심하고 어떻게 해결해야할지 설계관점에서 고민하면서 읽음.

2. 조영호 - 오브젝트
나름대로 오랫동안 고민한 객체지향이라는 주제를 우리네 업무로직이 정말로 객체지향설계인가? 아니라면 어떻게 도입할 것인가? 궁금해하며 읽음.
위 ddd 아키텍처의 도메인 서비스에 해당하는 주제라는 것을 알게됨.
이전에는 객체지향이란게 혼란스러운 우리네 업무로직을 클린하게 해줄 것이라고 믿음(의심)만 있었지만, 이책을 읽고 확신하게 되고 객체지향에 남다른 애정을 갖게됨.

3. 알렉스 맥카우 - 자바스크립트 웹 어플리케이션
->
혼란스러운 우리네 업무로직, 특히 jsp+jquery(프론트엔드)를 어떻게 하면 클린하게 만들 수 있을까 고민하던 와중에 구매한 책.
-> 이 책은 Node.js나 react, vue가 세상에 등장하기 이전에 클라이언트 자바스크립트 생태계가 돌아갔는지 MVC패턴을 중심으로 설명을 함.
->
저자 본인이 만든 spine.js prototype.js, backbone.js가 '클래스'를 어떻게 정의하는지부터 출발하며, M, V, C 개별객체에 대한 상세설명을 함.
4. 로버트 C. 마틴 - 클린 아키텍처
-> 우리네 업무코드가 깨끗하지 못한 것에 대한 원인을 다각면에서 찾으려함.
1->
그중에 단순히 개별 기능에 대한 개발뿐만아니라 전체적인 어플리케이션 설계, 즉 아키텍처 관점에서 원인을 파악하려함.
>
예전에 사다놓고 읽지않았지만, 우리네 업무코드가 조금더 깨끗했으면 하는 바램으로 다시 읽어보니 내용이 훨씬 더 잘읽힘.
내용 중 모듈단위에서의 DIP나 공통 폐쇄 원칙(CCP)같은 내용들이 아직까진 어렴풋이 겨우 이해하는 수준.

5. 로버트 C.마틴 - 클린 코드
-> 코드가 깨끗해지기 위해선 객체지향기법뿐이 아니라는 것을 알게됨.
네이밍규칙, 주석다는법, 함수에 관하여 등 다양한 주제를 언급함.
-> 특히 자료구조와 객체지향의 비교가 인상적이었음. 간단한 요구사항으로 객체지향을 체감할 수 있게해줌.
|-- 근데 여전히 어려운 책임. 두고두고 읽어봐야할 책.

6. 톰캣: 최종분석
학원다닐때 일인데, 이클립스에 톰캣설정하고 서버키면 콘솔창에 나오는 빨간글씨가 있었음.
내가sout한것도 아닌데 그리고 왜또 빨간색인지 너무너무너무 궁금했음.
그리고 또 @WebServlet을 붙인 컨트롤러도, 스프링의 컨트롤러도 그렇고 한번도 내가 new Controller라던지,
new Servlet을 한적이 없는데 객체가 생성이 된게 너무 이해가 잘 안갔음.
입사하고 다시 그 빨간색 로그를 찾아보니 톰캣자원이란것을 알게됨(새삼..)
마침 톰캣이나 스프링같은 오픈소스를 까보면 객체지향의 원리(?)가 숨어있지않을까 궁금하게됨.
그뒤로 구글링이나, 소스를 직접 까보는 방법으로 톰캣을 공부하다가 관련 책은 없는 검색하다 알게됬는데 동네 도서관에서 발견한 책. 너무 반가웠음.
책을 읽기전에 소스를 까봐서 알게된 사실이지만,
1. 톰캣은 결국 .java파일, 즉 자바로 만들어졌다는점.
2. 톰캣도 결국 그시작은 main메소드부터 시작한다는점.
두가지사실은 당시 나로써는 상당히 충격적이었다(뭔가 대단한 프로그램이 숨어있을줄알았나보다 ㅋㅋ)
물론 뭐 .sh파일이나 .bat파일로 메인메소드를 실행하지만 뭐아무튼 읽는내내 너무 즐거웠다. 호기심을 충족시켜주는 느낌(속이 뻥~)
다시 책내용으로 돌아와서 이 책은 아주 간단한 메인메소드부터 시작한다.
그리고 (나만) 충격적인 사실을 알려준다.
1. 톰캣이 브라우저에 localhost:8080/을 알아먹는다는것은 사실 new ServerSocket(ip, port). Accept(); 메소드 였다는사실.
2. org.apache.catalina.core.StandardWrapper 클래스의 loadServlet()메소드에서 new Servlet을 해준다는 점(물론 newlnstance() 메소드지만)
또한 톰캣이 필요로 하는 클래스로더를 제공하는 Catalina라던가,
web.xml, server.xml 파일을 도대체가 톰캣이 어떻게 알아먹을 수 있는지 궁금했었는데 그것이 곧 SAXParser라는 걸 알게되었고,
톰캣은 이를 Digester라는 컴포넌트 형태로 제공하는것도 알게 되었다.
톰캣을 공부하면서 굉장히 좋았던 점은 톰캣이 순수하게 rt.jar파일만을 가지고 구성된 서버라는 점이다.
Juli라고 불리는 톰캣의 로그시스템도 java.util.logging 패키지의 자원을 커스텀한것이고,
위에서 언급한 Xml파싱도 rt.jar파일의 자원이다.
순수하게 자바se만 가지고 엄청난 라이브러리를 만들었다 생각하니 새삼 더그 리 교수님이 위대해보였다.
또한 web.xml의 ContextLoaderListener 설정은 스프링의 시작을 알리는 설정으로, 이전에 포스팅한적이 있다.

7. 성능관련 서적
- 자바최적화, 자바 트러블슈팅
우리네 서비스가 느리다는 민원(실제로 엄청느리다ㅠㅠ)의 지속적인 유입, 업무특성상 운영업무도 병행한다는점(데봅스아니다!).
그리고 개인적인 관심과 호기심으로 읽게된 책.
그런데 아직까진 너무 어렵다ㅠㅠ..
3년차에 상세후기를 작성할수잇지않을까 기대해본다.

8. 그외
친구와 진행햇던 알고리즘스터디 이펙티브자바, 인사이드 자바스크립트등 분량이 길어져 생략한 책들.
알게모르게 도움이 많이 됫다

아무튼간에 나의 지난2년간의 개발자여정은 호기심과 불만, 그리고 그 불만을 해소하기 위한 고군분투였다.
때로는 도저히 해결할 수 없는 문제는 나로하여금 절망감을 느끼게하지만, 그럼에도 내가 꾸준히 정진할 수 있었던 이유는
호기심을 가지고 지속적인 탐구를 하였기 때문이 아닌가싶다

총총