Latency와 Performance를 위한 자바교육

1.
오래 전 Java로 금융솔류션을 개발할 때입니다. FIX, Forex와 관련한 시스템을 개발했습니다. 물론 WTS도 개발했습니다. 이 때 채용한 개발자들은 사회에서 자바교육을 받고 입사하였습니다. 주로 JSP를 개발하는 수준이었습니다. MVC Framework를 아는 분도 별로 없었습니다.

가끔 술자리에서 물어봅니다.

“JVM의 Spec을 읽어본 사람이 있어요?”

훌륭한 프로그램머는 OS에 대한 깊은 이해를 가진 사람이라고 생각합니다. Java 프로그램머라고 하면 JVM을 이해해야 한다고 생각했기때문입니다. 한명도 없었습니다.

요즘 Java 프로그래머를 위한 고급과정을 살펴보았습니다. 비트교육센터의 자바고급과정와 오라클자바교육센터의 Ajax,jQuery Spring3.X&MyBatis 실무과정입니다. JSP가 Java의 대세이었을 때 JSP교육을 하던 것과 비슷해 보입니다. Web 2.0, 대표적인 Framework인 Spring 교육 그리고 iBatis까지 실무적인 교육과정입니다.

Low Latency와 HPC를 위한 언어로 Java가 자리잡고 있는 요즘, 부족해보입니다.

2.
자바를 기반으로 HFT 프로그램을 개발하는 곳이 있습니다. Java로 HFT를 구현하면?에서 소개하였던 OpenHFT입니다. 이곳이 만든 Java 과정입니다. 앞서의 과정과 많이 다릅니다. 이런 과정을 만들 역량이 있는 곳이 있을까요?(^^)

Expert Java Development (2-3 days)

  • Working with primitives to save memory and reduce garbage.
  • How to use double and long safely instead of BigDecimal.
  • How to use collections like Map, Set, ConcurrentMap, NavigableMap, List, Queue, BlockingQueue and Deque effectively.
  • How to use thread pools and fork join.
  • Asynchronous processing and exception handling.
  • How to use Lambdas in Java 8 for lazy evaluation and parallel coding.
  • How to use Plain IO and NIO, files, TCP and UDP.
  • volatile, read/write memory barriers and when you need them.
  • default methods in Java 8.
  • Using enum for singletons and utility classes.
  • Java 8 JSR-310 Date Time library.
  • Using off heap memory with ByteBuffer.
  • Command line options for monitoring the JIT

Java Memory Management and Optimisation (1 day)

  • Measuring memory usage
  • Finding memory leaks.
  • Optimising GC pauses
  • Speeding up code between GC pauses
  • GC free coding
  • Low GC replacements for common development patterns
  • Command line options for monitoring and tuning memory use.

Java Multi-thread and Concurrency (1 day)

  • When to multi-thread and when not to.
  • Sharing immutable data between threads
  • Using multiple data within a thread.
  • Reactor, Streaming processes and Event Driving processing.
  • Performance tuning multi-threaded applications
  • Busy waiting and CPU binding for reducing latency.

Java Performance profiling and Tuning (1 day)

  • How to measure latency in a meaningful way.
  • How to measure your application for performance end to end.
  • Micro-benchmarks; pit-falls and getting meaningful results.
  • How to model your performance profile.
  • How to find the biggest opportunities to improve to target your changes (and keep them to a minimum)
  • Examples of performance changes and alternatives

How the JVM really works and low level coding (1 day)

  • What is byte code and how is it used.
  • How can you write byte code.
  • How is lambdas implemented in Java 8.
  • How to use off heap memory.
  • When to use on heap vs off heap memory.
  • How CPUs really work and how to take advantage of this in Java.

Event driven processing (1-2 days)

  • Asynchronous processing and persistence
  • Actor patterns and lower latency reactive patterns
  • Event driven parsers.
  • Event routing and filtering.
  • Aggregating engines.
  • Simple complex event processing engines.
  • Performance monitoring and measures for event driven systems.

Expert low latency event driven systems (1-2 days)

  • How to build deterministic systems with repeatable outcomes and performance.
  • How to get detailed information about production systems without impacting performance.
  • How to use distributed systems for high throughput.
  • How to scale you system vertically as well as horizontally.
  • How to get low latency in a distributed/redundant system.

Practical use of Chronicle (1-2 days)

  • Introduction to using Chronicle Queue and Map.
  • How to write millions of messages per second without garbage.
  • How to update millions of key-values per second without garbage.
  • How to achieve micro-second latency and persistence.
  • How to distribute across many machines efficiently.
  • How to distribute high volumes across a WAN in a controlled manner.
  • Chronicle internals, lessons learnt, techniques used.

Leave a Comment

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.