- [HTTP 웹 서버 리팩토링 실습 문서](5.1 HTTP 웹 서버 리팩토링 실습.pdf)
다음 2개의 동영상을 참고해 톰캣 서버를 설치하고 “Hello World”를 출력하는 서블릿을 추가해 실행해 보기 바란다.
- https://youtu.be/jWVlAclnIXo 동영상은 Embedded 톰캣 설정하는 방법을 다룬다.
- https://youtu.be/xCXw8xmmWC4 동영상은 Hello World 출력하는 서블릿을 추가하고, 실행해 보는 과정을 다룬다.
톰캣 서버를 활용해 웹 애플리케이션을 개발하는 과정에서 소스 코드를 수정한 다음 서버를 재시작해야하는 경우가 많다. 서버 재시작을 단축키로 할 수 있도록 지원하는 이클립스 플러그인이 있어 소개한다. 설치하고 사용하는 방법은 다음 동영상을 참고한다.
- https://youtu.be/OdCR6Y4_HAQ : relaunch plugin을 설치
이 장에서는 4장에서 구현한 HTTP 웹 서버를 리팩토링하면서 객체지향 설계와 객체지향적으로 개발했을 때 얻을 수 있는 이점에 대한 맛을 볼 수 있었다. 또한 이렇게 리팩토링한 웹 서버가 현재 자바 업계의 표준이라 할 수 있는 서블릿 컨테이너, 서블릿과 어떻게 연결되는지에 대해 알아봤다. 이 두 가지 주제와 관련한 추가학습 자료는 다음과 같다.
객체지향 설계 뿐 아니라 모든 설계는 짧은 기간 공부한다고 바로 효과를 볼 수 있는 영역이 아닌 듯하다. 다양한 관점으로 설계해 보고 고민한 경험들이 축적되어야만 좋은 설계를 할 수 있다. 따라서 이 부분의 학습은 개발자가 평생을 통해 지속적으로 학습해 나가야할 부분이다. 평생을 학습해야하는 주제이니 만큼 여유를 가지고 접근하면 좋겠다.
먼저 초보 개발자도 부담 없이 읽을 수 있는 2권의 책을 추천한다.
- 객체지향의 사실과 오해(조영호 저, 위키북스/2015) – 객체지향의 이론적인 내용에 대해 학습할 수 있다. 특히 객체를 설계할 때 각 객체의 역할, 책임, 협력이 중요한데 이와 관련해 초보 개발자도 이해할 수 있도록 예제를 통해 쉽게 풀어내고 있다.
- 개발자가 반드시 정복해야 할 객체지향과 디자인 패턴(최범균 저, 인투북스/2013) – “객체지향의 사실과 오해” 책이 이론적인 부분을 다루고 있다면 이 책은 예제 코드를 통해 객체지향과 디자인패턴에 대해 다루고 있다. 먼저 이 2권의 책을 통해 객체지향과 디자인 패턴에 대한 대략적인 맛을 느낀 후 다음 단계의 양파 껍질에 도전해 보면 좋겠다.
서블릿과 JSP는 정말 오랜 역사를 가진 기술이다. 하지만 아직도 자바 웹 애플리케이션 개발에 활용되고 있다. 서블릿, JSP의 많은 내용은 지금 단계에서 몰라도 괜찮다. 하지만 서블릿 컨테이너, 서블릿 라이프 사이클, 서블릿 컨테이너와 서블릿의 관계, 서블릿 필터, 스코프, 쿠키와 세션과 관련해서는 반드시 학습할 것을 추천한다.
- Head First Servlet & JSP(케이시 시에라, 버트 베이츠, 브라얀 바샴 저/김종호 역, 한빛미디어/2009) – 서블릿 컨테이너와 서블릿의 관계를 그림을 통해 잘 설명하고 있다. 정말 오래된 서블릿 책이다. 오래된 버전을 다루고 있어 굳이 구매할 것을 추천하지 않는다. 도서관에서 책을 빌린 후 “2장 웹 애플리케이션 아키텍처, 4장 서블릿이 되어보자”라도 읽어보면 서블릿 컨테이너와 서블릿 관계를 좀 더 명확하게 이해할 수 있다.
- 프로가 되기 위한 웹기술 입문(고모라 유스케 저/김정환 역, 위키북스/2012) 5장 – 톰캣은 자바 진영에서 동적인 웹 애플리케이션을 지원하기 위한 서버이다. 이와 같이 각 언어마다 동적인 웹 애플리케이션을 지원하는 서버를 웹 애플리케이션 서버(Web Application Server)라고 한다. 줄여서 와스(WAS)라고도 부른다. 정적인 웹 자원을 서비스하고 부하 분산을 목적으로 하는 웹 서버가 존재한다. 대표적인 웹 서버는 아파치와 nginx가 있다. 오랜기간 동안 아파치가 웹 서버의 강자였으나 최근에 nginx가 급부상하고 있다. 웹 서버와 웹 애플리케이션 서버와의 관계에 대해 더 깊이 있게 학습하고 싶다면 책의 “5장 웹 애플리케이션의 구성 요소”를 읽어보기 바란다. 데이터베이스 서버와의 관계에 대해서도 학습할 수 있다.
서블릿 & JSP와 관련해서는 정말 다양한 색깔의 책이 많다. 자바 책과 같이 딱히 이 책이 좋다라고 추천하기 힘들다. 자신의 색깔과 맞는 책을 직접 선택해 볼 것을 추천한다.
최근에는 동적으로 HTML을 생성하기 위해 JSP를 사용하는 대신 템플릿 엔진을 사용하는 것이 일반적이다. JSP와 템플릿 엔진의 역할은 같다. 아직도 많은 곳에서 JSP를 사용하고 있지만 흐름은 템플릿 엔진으로 넘어가고 있다.
지금까지 동적인 HTML 생성을 웹 백엔드가 담당했는데 모바일과 같은 다양한 기기의 등장으로 최근 웹 백엔드는 JSON/XML과 같은 데이터만 제공하고 동적인 웹 UI는 클라이언트가 담당하는 방향으로 변화해가고 있다. 이 같은 방향으로 발전해 갈수록 JSP에 대한 필요성은 떨어질 수 밖에 없으며, 템플릿 엔진에 대한 필요성은 높아갈 것이다.
JSP에 비해 템플릿 엔진이 가지는 장점도 많기 때문에 개발 경험을 쌓는 시작 단계부터 JSP 대신 템플릿 엔진을 활용할 것을 추천한다. 구글에 검색해 보면 정말 많은 템플릿 엔진이 존재한다. 이 중 어느 하나를 추천하기 힘들다. 자신의 프로젝트 상황에 따라 적합한 템플릿 엔진을 선택해 적용해 보기 바란다.