쉽게 따라하는 자바웹개발

저자
백기선 지음
출판사
인사이트 | 2012-11-30 출간
카테고리
컴퓨터/IT
책소개
자바 웹 개발을 처음 접할 때 각종 프레임워크와 툴을 사용하는 ...
가격비교 글쓴이 평점  


스프링과 친해지기 마지막에 '전문가의 조언'에서 toby님이 하신 '스프링 학습법'을 간단하게 정리해봤다.

1. 스프링의 DI를 익히는 깃

2. 자바 언어를 잘 익혀야 함.

     * 언어의 문법과 기본 코딩을 익히고 나면 표준 라이브러리의 주요 API를 능숙하게 사용할 수 있도록 학습

3. java.util 패키지의 API믐 꼼꼼하그 공부

4. 객체지향 디자인패턴 공부

5. 애플리케이션의 업무 로직을 자바 클래스로 설계하고 코드로 만드는 연습

6. 이렇게 설계된 클래스를 스프링 DI를 적용해서 만들어지고 관리되도록 관리

7. 서버없이 스프링 DI컨테이너만 만들어도 충분히 스프링 DI사용

8. 스프링에서 DB와 관련된 부분 학습

     * JDBC를 익히고 DB와 SQL을 제대로 사용하도록 공부

     * JDBC -> Spring JDBC

     * iBatis를 이용한 매핑 기술

     * 하이버네이트, JPA와 같은 ORM을 이용해서 DB 프로그래밍을 하는 것이 대부분

          * ORM은 해당 기술의 개념과 코드 작성 방법을 익히는데 충분한 시간을 할애해야 한다.

9. 서버에서 동작하는 엔터프라이즈 애플리케이션을 스프링을 이용해서 작성하고, 서버에 배치하는 방법을 익히면서 웹 프로그래밍에 스프링을 적용해볼 차례

결국은 기초부터 차근차근 배우고 익히면서 내 것으로 만들어가는 과정부터 시작해야한다.

이 바닥에 뛰어들고, 3년쯤 지나서야 무슨 말인지 깨닫게 되었다.

기초가 든든하지 않으면, 쉬이 흔들리게 된다.

기초튼튼!!


나는 웹 애플리케이션 개발자이기 때문에 운영체제를 몰라도 된다?


  모든 프로그램은 운영체제를 기반으로 하여 동작한다. 운영체제는 플랫폼이다. 최근에는 웹과
  운영체제에 대해서 이해를 함으로 인해서 프로그래밍을 할 때, 운영체제의 오류에 빠져드는 실수를 회피할 수 있는 가능성이 높아진다.


  자바는 운영체제에서 실행시킨 JVM(Java Virtual Machine)에 의해서 바이트 코드를 실행하기 때문에 운영체제의 영향을 받지 않는다고 알려져 있다(운영체제마다 약간의 차이는 있다는 생각이 들지만, 코딩하는 중에는 윈도우, 리눅스, 유닉스 에서 큰 영향은 없었다. 통합된 빌드과정과 웹서버에 코드를 배포하고 웹서버에서 구동시키는 형태였으니 그랬겠지만…).
 
  프로그래머가 직접 운영서버에다가 빌드를 하게 되는 경우가 얼마나 될까? 외부에서 접근이 가능한 서버라면 통합빌드 환경을 구축해두고서 원격배포를 할 수 있으니 크게 신경쓸 것이 그리 많지가 않다(SSH, FTP 접속, 웹서버의 설치 위치 확인, 스크립트 작성… 또 뭘 신경써야 하더라?).
  이전 프로젝트에서는 개발빌드환경을 신경쓸 필요가 없었다. 아키텍트가 개발에 필요한 웹서버 및 빌드환경을 구축해주고 알려줬기 때문에 이런 것들을 신경쓸 필요가 없었다. 로직과 기능을 개발하고 커밋하고 개발서버에서 빌드를 누르고 오류가 발생했는지 지켜보다가 정상빌드되며 개발서버에서 내가 구현한 기능이 정상동작하는지 확인하면 되었다.


  최근 공공기관에서 수주한 작은 SI프로젝트를 하면서 직접 리눅스LINUX(Redhat 6.0 Enterprise) 서버 콘솔Console로 접근해서 톰캣 서버(Tomcat 6.0)를 설치하고 jar파일을 복사하는 등의 일을 하면서 느끼는 거지만 프로그래머는 단순히 코딩만 하는 것이 아니라 운영체제를 충분히 알고 있어야 한다는 것이다. 어디가서 '리눅스 좀 씁니다, 요즘은 유닉스(맥북의 맥OS가 Unix 기반이니까)도 좀 씁니다.' 라고 이야기 했지만, 운영서버에 집접 배포본(.war)을 설치하고 구동시키는 것은 만만치가 않았다. 그나마 운영서버들이 모두 GUI를 제공했기 때문에 내가 운영체제를 쓰던 그대로 사용할 수가 있었다.


  리눅스 운영체제에서 애플리케이션이 설치되는 위치, 로그파일 생성 위치와 배포본의 압축해제 위치 등을 주의깊게 본 적이 없었는데, 이번 프로젝트를 하면서 깨달은 바가 좀 있다.
  물론 나 혼자였다면 훨씬 더 많은 시간을 들여야 했겠지만 곁에서 알려주시는 멘토가 있으셨기에 훨씬 수월하게 일을 처리할 수가 있었다. 우리 회사에서 진행하는 솔루션들도 이런 과정을 직접 프로그래머가 진행해야할 상황이 될 가능성이 높으니 이런 경험은 성장을 위한 좋은 밑거름이 되지 않을까?


  '프로그래머라면 자신이 사용하는 개발환경의 운영체제를 스스로 구축하고 사용하는 것을 피하지 않아야 한다.'고 생각한다. 꽤 많은 시간이 소요되는 작업이지만, JDK가 어떻게 설치되고 JDK_HOME의 위치가 어떻게 설치되는지, 경로를 설정할 때 ';'(윈도우)을 써야하는지 ':'(리눅스, 유닉스)을 써야하는지는 알아야 하지 않을까?

누가 봐도 감탄할 만한 한줄의 코드.


'Hello, world'


완벽한 코드를 향해 노력하는 프로그래머, 코드 디자이너가 되기 위해 노력하자.




바텐더
카테고리 만화 > 직업만화
지은이 Joh Araki(조 아라키) (학산문화사, 2006년)
상세보기


신의물방울.28
카테고리 만화 > 직업만화
지은이 TADASHI AGI (학산문화사, 2011년)
상세보기


'신의 글라스', '신의 물방울'을 보다가 뻘생각.


도메인주도설계소프트웨어의복잡성을다루는지혜
카테고리 컴퓨터/IT > 네트워크/보안
지은이 에릭 에반스 (위키북스, 2011년)
상세보기

목차마인드맵을 그려두는 것도 책의 흐름을 이해하는 데 꽤 도움이 된다.

  준비가 많이 부족한 상황에서 '모바일 사이트'를 구축하는 프로젝트에 투입된지 4개월 정도 되어간다. 

스프링(http://www.springsource.org/), iBatis, 스프링시큐리티(http://static.springsource.org/spring-security/site/index.html), 프리마커(http://freemarker.sourceforge.net/), jQuery(http://jquery.com/) mobile(http://jquerymobile.com/), 메이븐(http://maven.apache.org/), 허드슨(http://wiki.hudson-ci.org/dashboard.action) ... 등등의 다양한 프레임워크와 템플릿 엔진, UI 프레임워크들을 아우르며 사용할 수 있는 경험을 얻게 되었다.

  @_@) 경험이 많이 부족하다보니, 짧고 많은 일을 해야하는 프로젝트 안에서 제대로 이해하고 적용하는 것에 문제가 좀 많다. ^^; 이런 상황 속에서 작성한 프로그램 코드들을 보면 불필요하거나 중복되는 기능이 겹치는 경우가 종종 발생한다. 

어제 코드 다르고, 오늘 코드 다르고, 내일 코드가 다르다.

랄까? 그래도 조금씩 자바라는 프로그래밍 언어가 가지고 있는 특징들에 대해서 느껴가는(알아가는이 아니고!?) 단계에 들어섰다고 생각합니다. 그동안 얼마나 내가 프로그래머로서의 이해능력과 자각이 부족했는지 여실히 깨닫게 되는 경험을 얻고 있다. 


  이번 프로젝트에서는 3개의 회사가 함께 진행되고 있다. 이 프로젝트에서 제일 중요한 것 중 하나는 '협.업(Cowork)' 이다. 

  나는 SI 프로젝트 경험이 그리 많지가 않다. 이번 프로젝트에서 아쉬운 부분이 있다면, 3개의 회사간의 협력이 잘 이루어지고 있지 않다는 점이랄까? 7월에 들어서면서 개발에 한창 속도를 올려야하는 상황인데 불협화음과 함께, 여러가지 요소에서 지연되는 상황들이 발생하면서 프로젝트의 진행상황도 지연되고 있는 상황이 아닐까라고 짐작하고 있다. 프로젝트에 대한 경험이 부족한 내가 딱 '이래서 늦어'라고 말할 수는 없다. 


  요즘 '무한도전'에서 조정을 하고 있는데, 계속 보면서 느끼는 거지만, 지금 팀 내에서 내 모습과 '현재 조정을 하면서 민폐라고 스스로 느끼고 있는 정형돈'의 모습이 겹쳐지고 있다. 개발경험은 부족하고... 개인적인 노력도 부족한... 부족한게 많은 초보 개발자다. 배워야할 것도 많고 알아야할 것도 많고 익혀야할 것도 참 많다.

  서두르지 말고 차근차근 가자.


+ Recent posts