서버가 정상적으로 수행되었다면, 관리자 콘솔에 들어가야 한다. 웹과 커맨드라인 접근의 두가지 방법이 있는데, 웹으로 들어가보자.
웹 콘솔에 들어가는 방법은 다음의 URL로 들어가면 된다. http://localhost:4848 그런데 이렇게 들어가면 id/pw를 묻는다.(이거 찾느라 좀 시간이 걸렸음) 만약 Glassfish를 서버에 설치했다면, localhost 대신 서버 IP를 입력해야 한다.
오늘 팀장님께서 복사한 문서를 한번 읽어 보라고 주셨다.
9개의 자바 성능 팁에 대해서 아~주 간단하게 정리되어 있는 문서다. (2페이지에 걸친...)
그 장의 첫번째 구문에는 Michael A. Jackson 이라는 할아버지가 쓴 글귀가 있다.
The First Rule of Optimization : Don't do it
The Second Rule of Optimization (for experts only) : Don't do it yet.
이 문서가 언제 쓴 문서인지는 모르겠지만.... 이 글귀는 약간 이해는 안된다. ^^;
Tip #1 : Object creation is bad
Tip #2 : static is good ==> I don't think so 다.
Tip #3 : Table switch good, lookup switch bad
Tip #4 : Small methods are good methods
Tip #5 : Exceptions are exceptional
Tip #6 : Use decorator patterns with care
Tip #7 : instanceof is faster on classes
Tip #8 : Use synchronized minimally
Tip #9 : Beware external libraries
로드맵을 작성하다보니, 웹기반 시스템을 만들 개발자에겐 어느정도 도움이 되는 책들이 많으나, 서버 모듈이나 Core 모듈을 개발하는 개발자용 책은 그리 많지가 않은거 같네요.
먼저 이벤트 페이지에 올라와 있는, 책들의 표지 목록을 보니 “엄청나게 많은 종류의 책이 출판되고 있구나” 라는 사실을 알게되었다. 그것도 IT 책만을 전문적으로 출판하는 회사에서…
그런데, 표지 목록에 있는 책들을 보니, 이미 절판된 책도 있는 것으로 보였다. 최대한 내가 알고 있는 절판 책들은 뺐으나, 이 목록에 포함되었을 수도 있으니 이점 양해해 주기 바란다.
추가로 이 로드맵은 웹 시스템 개발자를 위한 로드맵이고, 내 개인적인 의견이며, 사람마다 생각이 틀릴 수도 있다는 점을 이해해 주기 바란다.
그럼 이제 시작한다.
자바를 배우기 시작할 때에는 가장 먼저 자바의 기본과 알고리즘을 알아야 한다. 게다가 IDE 사용법까지…
기본적인 자바에 대해서 알았다면, 웹 개발을 위한 필수인 HTML과 자바 스크립트에 대해서 알아야 한다.
그리고, DB에 대해서 알아야 한다는 것은 두말할 필요도 없다.
DB까지 공부했다면, 본격적으로 Java를 이용한 웹 개발 환경인 JSP, Servlet, EJB 에 대해서 알아 두자.
(참고로 EJB는 죽었다고 생각 될 수도 있지만, EJB에서 제공하는 보안, 트랜젝션등의 관리 기술에 대해서는 알아두는 것이 나중에 정신 건강을 위해서 매우 좋다. ^^)
이게 끝이라고 생각할 수도 있겠지만, 이제 시작이닷!!!
언제까지 누가 모델링해준 것만 보고 만들것인가? 직접 자기가 모델링하고 설계할 수 있어야 한다.
그러기 위해선 UML, CBD(이것도 한물 갔다고 생각할 수 있지만, 개념은 알아야한다.), SOA(이것에 대한 책이 한빛엔 없어보인다)등에 대해서 알아야지…
보다 더 제대로 알고 개발하기 위해선, XML, 쓰레드, IO, 네트워킹, 리펙토링 정도는 공부해야 한다. 다른건 다 모르더라도 리펙토링은 반드시~~~~
그 다음엔, 요즘에 많이 사용되는 프레임웍과 Web 2.0, AJAX에 대해서도 공부해야 한다.
참고로 아래에 나와 있는 책들의 버젼은 내가 잘 모르며, 특히 프레임웍 책을 살 때에는 요즘 최신 버젼의 프레임웍인지에 대해서 잘 알아 본 후에 구입해야 한다. 버젼에 따라서 달라지는게 많아지기 때문에…
그럼 이제 개발한 것을 운영 서버에서 컴파일하거나 올려야 겠죠?
리눅스나 유닉스의 기본 명령어 정도는 알아야 한다.
마지막으로 개발의 꽃인 튜닝에 대해서 공부하자.
물론 나도 여기에 있는 모든 책을 읽은 것은 아니다.
하지만, 입맛에 맞게 골라서 Java 기반의 웹 개발에 대한 기본을 튼튼히 다지자.
먼저 위의 인터뷰 내용을 읽어보자.
Garbage First Collector가 뭔지 대충 감을 잡을 것이다.
분명 대부분 안읽어 보시겠지만....적어도 아래 줄들은 일어 주기 바란다.
G1=next-generation low-pause garbage collector
G1 will ultimately replace the Concurrent Mark-Sweep (CMS) garbage collector
G1, even though it is generational, there is no physical separation between the two generations.
Three Objectives of G1 The first objective is consistent low pauses over time.
The second objective is to avoid, as much as possible, having a full GC.
The final objective is good throughput.
if you care about getting the job done as quickly as possible, and don't care much for how long your application is going to be stopped by the garbage collector, the throughput collector is the best choice.
if you have a batch job that is going to take a few minutes or a few hours and you want it to be done as quickly as possible, then a throughput collector is clearly the best choice.
But, if you are working on a very interactive job that needs to interact with people, other applications, or users through web pages, then a low latency garbage collector is the best choice.
Why does garbage collection take so long? ==> Garbage collection is very memory-bound. And memory speeds these days are quite slow compared to CPU speeds
그리고, 저 이너뷰 한 사람이 사진을 잘 찍는가본데, 사진과 개발과의 상관관계를 아래와 같이 이야기 했다.
You need to be committed and to be patient and try out things again and again, to make sure that you get it just right. I see some parallels between photography and development.
마지막엔 그가 이야기하는 아름다운 코드란....
Beautiful code is code that is simple, easy to understand, and efficient
란다.
물론 JVM 옵션 튜닝만 한다고 해서 답은 안나오겠지만,
튜닝할게 더이상 없다면, JVM 버젼 upgrade 및 옵션 튜닝을 해야 할 것이다.
아래는 이 글의 목차다.
뭐 다 읽기 귀찮으신 분들은 4.2 부터 적용해 보시면 된다.
1 Introduction
1.1 Goals
1.2 This is a Living Document
1.3 How to Use this White Paper
2 Best Practices
2.1 Use the most recent Java™ release
2.2 Get the latest Java™ update release
2.3 Insure your operating system patches are up-to-date
2.4 Eliminate variability
3 Making Decisions from Data
3.1 Beware of Microbenchmarks!
3.2 Use Statistics
3.3 Use a benchmark harness
4 Tuning Ideas
4.1 General Tuning Guidelines
4.1.1 Be Aware of Ergonomics Settings
4.1.2 Heap Sizing
4.1.3 Garbage Collector Policy
4.1.4 Other Tuning Parameters
4.2 Tuning Examples
4.2.1 Tuning Example 1: Tuning for Throughput
4.2.2 Tuning Example 2: Try the parallel old generation collector
4.2.3 Tuning Example 3: Try 256 MB pages
4.2.4 Tuning Example 4: Try -XX:+AggressiveOpts
4.2.5 Tuning Example 5: Try Biased Locking
4.2.6 Tuning Example 6: Tuning for low pause times and high throughput
4.2.7 Tuning Example 7: Try AggressiveOpts for low pause times and high throughput
5 Monitoring and Profiling
5.1 Monitoring
5.2 Profiling
6 Coding for Performance
7 Pointers
8 Feedback and the Java Performance Community
일시: 2009년 2월12일 목요일 18:00 ~ 20:00
장소: 멀티 캠퍼스 1702호
=========================================================================
18:00 ~ 18:05 세미나 소개
18:05 ~ 18:30 효과적인 테스트 코드 작성(황상철 책임 SDS)
18:30 ~ 18:40 휴식
18:40 ~ 19:05 Secure Web Application(채수민 책임 SDS)
19:05 ~ 19:15 휴식
19:15 ~ 19:40 넵튠(Neptune) 과 하둡(Hadoop) 소개 (김형준 NHN)
19:40 ~ 20:00 Q&A 및 세미나 정리
=========================================================================
이번 세미나도 알차게 준비했습니다.
NHN의 김형준 실장이 새로운 오픈소스인 넵튠과 요즘 GFS로 많은 인기를 끌고 있는 하둡에 대해 소개할 예정이며,
보안그룹의 보안 전문가인 채수민 책임이 안전하게 웹 애플리케이션을 개발하는 방법에 대해 강의합니다.
끝으로 단위 테스트를 제대로 할 수 있도록 효과적으로 테스트 코드를 작성하는 법에 대해 제가 발표를 진행합니다.
자리가 한정되어 있습니다. 참여를 원하시는 분은 황상철 책임님에게 메일로 신청해 주시면 감사하겠습니다.
알차고 재미있는 시간이 될것을 약속드리며 엔지니어링에 관심있는 분들의 많은 참여 부탁드립니다.