이 책은 세세한 내용을 다루지는 않습니다.
전반적인 흐름을 알려준다고 생각하시고
읽어시면 가볍게 읽으실 수 있으리라 생각됩니다.
다양한 경험을 하셨다는 느낌을 받을 수 있고, 그러한 느낌을 최대한 반영을 하고자 하신 듯 합니다.
하지만, SE 들이 보기에는 좀 부족합니다.
효과적인 프로젝트 수행을 위한 자바 코딩과 튜닝 기법
튜닝이나 성능 테스트에서 이상이 감지되었을 때 시중에 나와있는 툴을 사용하면 대부분의 문제점은 쉽게 발견된다. 하지만 진짜 문제는 그야말로 ‘문제점’만 발견된다는 것이다. 실질적인 해결방법은 그 어디에도 나오지 않는다. 물론 그런 시스템을 관리하거나 개발하는 사람 중 고수가 있다면 해결방법을 알려 주는 경우도 있을 것이다. 하지만 그러한 경우에도 대부분 해결책만 자신의 코드에 반영할 뿐, 실제로 ‘왜’ 해야 하는지 모르는 경우가 다반사이다.
이 책은 이렇게 이중 삼중 고달픈 개발자들을 위해 더 나은 코딩 기법과 튜닝 노하우를 알려준다. 특히 단순한 좋은 코드의 나열이 아니라 개발자들이 쉽게 처하기 쉬운 난처한 상황과 해결해 나가는 과정을 동시에 제공하여, 개발자들이 그동안 지나쳐왔던 또한 앞으로 언제든지 닥칠 수 있는 어려움과 맞설 수 있는 힘을 길러준다.
이제 확실히 알고 코딩하자. 더 빠른 성능을 위한 코딩 습관과 튜닝 노하우가 바로 이 책에 있다.
감수평 & 추천평
지난 10여 년 동안 자바(Java) 개발자 관점에서 진정한 성능적 고찰을 시도한 책은 전 세계적으로도 많지 않았습니다. 대체적으로 단편적인 성능 향상을 위한 몇몇 프로그래밍 팁을 제공하는 한계를 벗어나지 못하였던 것입니다.
그러나 이 책은 다년간의 실무 프로젝트 성능 진단 경험을 바탕으로 집필되어, 성능 장애의 대표적 코딩 이슈부터 진단, 튜닝에 이르기까지 대단히 가치있고 의미있는 생생한 경험적 성능 노하우를 거침없이 제공하고 있습니다.
- 제니퍼소프트_이원영 사장
누구나 열광하는 화려한 무대를 표현하기 위해서 무대 뒤에서 보이지 않게 노력하는 많은 사람이 있습니다. 이처럼 프로그래머는 컴퓨터로 표현되는 많은 일들을 프그래밍할 때 그 이면에 감춰진 커다란 노력을 알아가는 것도 중요합니다. 이 책은 프로그래밍을 좀 더 원활하게 해주는 환경적인 지식들과 프로그래밍을 넘어 자바 언어의 근원적인 이야기들을 쉽게 설명해주는 책입니다. 초급 개발자를 넘어서기 위해 노력하는 분들에게 추천합니다.
- 허광남_okjsp.pe.kr 운영자
실무 현장의 다년간에 걸친 자바 애플리케이션을 튜닝 경험이 고스란히 녹아 있는 책입니다. 특히 디자인 패턴, GC 등 어렵게 느끼기 쉬운 내용을 초보자도 이해하기 쉽게 잘 표현하고 있습니다. 현업에서 개발 컨설팅을 하다 보면, 본 책에서 다루고 있는 내용을 너무 간과한 나머지 작성을 다 해놓고도 제대로 서비스를 오픈하지 못하는 경우를 너무 많이 봤습니다.
애플리케이션 추상화 단계가 높아질수록 애플리케이션을 올바르게 작성하는 방법, 특히 그 근본 원리를 아는 것이 중요하다고 생각합니다. 이에 본 책을 추천합니다.
- 김성박_『알기 쉽게 풀어 쓴 웹로직과 EJB』 저자
이 책을 한마디로 표현하자면 "신토불이"입니다. 그동안 출간된 시스템 성능과 관련된 대부분의 서적 이 이론적인 설명위주였다면, 이 책은 국내 개발자와 프로젝트를 위해 쓰여진 국내 개발자의 책입니다. 프로젝트의 최종 산출물인 시스템의 성능은 단순히 한두 줄의 자바 코드 또는 SQL에 의해서가 아니라 개발일정, 프로젝트의 표준, 아키텍처, 사용된 프레임워크, 개발자들의 기술 수준, 벤더의 지원, 개발자의 잘못된 코딩 습관 등 많은 직/간접적인 요소에 의해 결정됩니다. 이 책을 통해서 여러분은 국내 프로젝트 환경에 꼭 맞는 시스템 튜닝 및 문제 해결 방법을 만날 수 있을 것입니다.
- 김형준_NHN
이 책은 J2EE 기반의 웹개발에서 개발자, 운영자, 성능 테스터가 성능의 관점에서 고려해야할 실용적인 정보를 담고 있다. 특히 수많은 프로젝트의 성능테스트와 튜닝을 수행하면서 발견된 문제점 중 자주 발생하고 문제가 심각한 부분에 대하여 실제 사례와 함께 정리하여 제공하기 때문에 독자는 Java 개발 프로젝트에서 실제 사용가능한 핵심 튜닝 정보를 이 한권의 책으로 습득 가능할 것이다. 또한 오픈소스 도구 및 실제 사용되는 상용도구의 체험판을 번들로 수록하여 독자에게 유익한 도구를 사용할 수 있는 기회를 제공하고 있다.
부디 이 책을 통해 많은 사람이 성능 장애라는 악몽으로부터 해방되기를 기원한다.
- 박종빈_삼성 SDS Software 테스트 팀 수석보
사실 국내 프로젝트 현실은 엔지니어들에게 성능 좋은 시스템 개발을 요구하기보다는 빨리 개발하라고 재촉하기 일쑤지만 좋은 엔지니어라면 자신의 역량을 다른 사람과 차별화 하기 위해 좋은 코드, 더욱 성능 좋은 코드를 개발할 수 있도록 노력해야 한다고 생각합니다.
이 책은 GC, Reflection, Monitoring 같은 자칫 지겨워지기 쉬운 주제를 편하게 읽을 수 있게 설명했고, 실무에 적용하기 쉽도록 저자가 직접 경험한 사례를 소개한 가치있는 책입니다. 성능 관련한 국내외 서적이 시중에 별로 없는 상황에서 이 책은 노력하는 엔지니어들에게 Effective하고 Efficency한 방법을 알려 줄거라고 믿습니다.
- 황상철_삼성 SDS Engineering Methodology 팀 책임
부록 CD 가이드 01. 디자인 패턴 꼭 써야 한다 나초보씨 소개 들어가며 적어도 MVC 모델은 적용해야죠 J2EE 디자인 패턴이란? J2EE 디자인 패턴에 대해서 간단히 알아보자 Transfer Object 패턴 Service Locator 패턴 정리하며 02. 도대체 GC는 언제 발생할까? 들어가며 GC란? GC의 원리 GC의 종류 4가지 GC 방식 강제로 GC 시키기 정리하며 03. 내가 만든 프로그램의 속도를 알고 싶다 들어가며 프로파일링 툴(프로파일러)이란? System 클래스 System.currentTimeMillis와 System.nanoTime StopWatch 클래스 만들기 정리하며 04. 왜 자꾸 String을 쓰지 말라는 거야? 들어가며 String 클래스를 잘못 사용한 사례 StringBuffer 클래스와 StringBuilder 클래스 String vs StringBuffer vs StringBuilder 버전에 따른 차이 정리하며 05. 어디에 담아야 하는지… 들어가며 Collection 및 Map 인터페이스의 이해 Set 관련 클래스 중 무엇이 빠를까? List 관련 클래스 중 무엇이 빠를까? Map 관련 클래스 중에서 무엇이 빠를까? Collection 관련 클래스의 동기화 정리하며 06. 지금까지 사용하던 for 루프를 더 빠르게 할 수 있다고? 들어가며 조건문에서의 속도는? 반복 구문에서의 속도는? 사례를 통해서 본 반복 구문의 속도 향상 정리하며 07. static 제대로 한번 써보자 들어가며 static의 특징 static 잘 활용하기 static 잘못 쓰면 이렇게 된다 static과 메모리 릭 정리하며 08. 클래스 정보 어떻게 알아낼 수 있나? 들어가며 reflection 관련 클래스들 reflection 관련 클래스를 사용한 예 reflection 클래스를 잘못 사용한 사례 정리하며 09. synchronized는 제대로 알고 써야한다 들어가며 자바에서 스레드는 어떻게 사용하나? synchronized를 이해하자 동기화는 이렇게 사용한다 1 동기화는 이렇게 사용한다 2 동기화를 위해서 자바에서 제공하는 것들 정리하며 10. IO에서 발생하는 병목 현상 들어가며 기본적인 IO는 이렇게 처리한다 IO에서 병목이 발생한 사례 그럼 NIO의 원리는 어떻게 되는 거지? NIO로 복사 작업을 더욱 빠르게 정리하며 11. 로그는 반드시 필요한 내용만 찍자 들어가며 System.out.println의 문제점 System.out.format 메소드 시스템 로그를 보다 간결하게 처리하는 방법 Logger 사용법 Logger 사용 시의 문제점 예외 처리도 이렇게 정리하며 12. JSP와 서블릿에서 발생할 수 있는 여러 문제점 들어가며 적절한 인클루드 사용하기 자바 빈즈, 잘 쓰면 약 못 쓰면 독 태그 라이브러리도 잘 써야 한다 정리하며 13. DB를 사용하면서 발생할 수 있는 문제점 들어가며 DB Connection과 Connection Pool, DataSource DB 쓸 때 닫아야 하는 것들 ResultSet.last() 메소드 JDBC를 사용하면서 유의할 만한 몇 가지 팁 정리하며 14. XML도 잘 쓰자 들어가며 Java에서 사용하는 XML 파서의 종류는? SAX 파서는 어떻게 사용할까? DOM 파서는 어떻게 사용할까? 각 파서를 비교해 보자 XML 파서가 문제된 사례 정리하며 15. GC가 어떻게 수행되고 있는지 보고 싶다 들어가며 jvmstat란? 자바 인스턴스 확인을 위한 jps GC 로그를 남길 수 있는 jstat jvmstat를 원격으로 볼 수 있게 하는 jstatd visual하게 GC를 볼 수 있는 visualgc verbosegc 옵션을 이용한 GC 들여다 보기 정리하며 16. 서버를 어떻게 세팅해야 할까? 들어가며 세팅해야 하는 대상 아파치 웹 서버 세팅 DB Connection Pool 및 스레드 개수 설정 WAS 인스턴스 개수 설정 Session Timeout 시간 설정 GC 값 세팅 및 메모리 설정 방법 정리하며 17. 반드시 튜닝 및 점검해야 하는 대상은? 들어가며 반드시 튜닝해야 하는 대상 선정 왜 로그인 화면을 튜닝(분석)해야 하는가? 황당한 사고 사례 정리하며 18. 모니터링 API인 JMX 들어가며 JMX란? MBean에 대해서 조금만 더 자세히 알아보자 JConsole을 이용한 WAS 모니터링 방법 원격으로 JConsole을 사용하기 위해서는? 정리하며 19. 어떤 화면이 많이 쓰이는지 알고 싶다 들어가며 웹 로그란? 무료 웹 로그 분석 툴에는 어떤 것이 있나? AWStats를 사용하여 웹 로그 분석하기 정리하며 20. 원인을 너무나 찾기 어려웠던 사이트 들어가며 문제점을 먼저 확인해야 한다 근본적인 원인을 찾아서 원인은 다른 곳에 있었다 정리하며 21. 자바 기반의 배치 프로그램을 튜닝했던 사례 들어가며 프로젝트의 상황 이럴 때에는 이렇게 접근해야 한다 이렇게 튜닝했다 정리하며 22. 잘 되어 있는 시스템도 튜닝 대상은 있다 들어가며 문제되는 시스템의 상황 공통 클래스는 이렇게 튜닝했다 세부 기능들은 이렇게 튜닝했다 사용자가 순간적으로 몰리는 시점에는… 정리하며 23. 복합적인 문제가 발생한 프로젝트 들어가며 트랜잭션이 사라진단다 스레드를 지속적으로 추가하면 어떻게 될까? 웹 서버가 계속 죽어요 WAS에서 사용자 수를 통제하자 사례 부분을 정리하며 24. 애플리케이션에서 점검해야 할 대상들 들어가며 패턴과 아키텍처는 잘 구성되어 있는가? 기본적인 애플리케이션 코딩은 잘 되어 있는가? 웹 관련 코딩은 잘 되어 있는가? DB 관련 코딩은 잘 되어 있는가? 서버의 설정은 잘 되어 있는가? 모니터링은 어떻게 하고 있는가? 부록 01. StopWatchAverage 클래스 소스 02. jstat 옵션 03. NetBeans IDE Profiler 사용하기 04. Visual GC 화면 설명 05. GC Analyzer 사용법
자료명 | 등록일 | 다운로드 |
---|---|---|
예제소스 | 2016-04-06 | 다운로드 |