Oracle Code 2017

오라클 코드 2017 컨퍼런스에 참여했습니다.

1300명 이상이 등록했다고 합니다.
유튜브 생방송도 진행되었습니다.
물론 다시 보기도 제공합니다.

자바를 주로 사용하지 않다 보니 특정 개념이나 몇 가지 흥미롭게 들은 세션을 정리해 봤습니다.

영상에서 동시통역도 지원하기 때문에 위에 링크를 통해서 다시 듣기를 듣는 걸 추천해 드립니다.

점심 교환권과 경품응모권

일찍 시작해서 밥도 안먹고 갔는데 빵이 있네요.

컨퍼런스의 꽃, 물 제공

준비중입니다.

나름 두툼한 관련 책자도 나눠줍니다


CQRS를 언제 왜 그리고 어떻게 사용할 것인가

CQRS란?

CQRS에 대해서 잘 몰랐기 때문에 흥미롭게 들었습니다.

C_ommand
Q_uery
R_esponsibility
S_egregation

위의 앞글자를 따서 CQRS라고 합니다.

이를 사용함으로써 CRUD의 문제점을 개선할 수 있다고 합니다.

CRUD의 문제점이라 함은 모든 기능이 하나에 데이터베이스에서 동작하고, 그로인해 Read와 나머지 동작을 분리 한 개념입니다.

Read 할 데이터를 캐시로 돌려서 빠르게 불러오고, CUD 동작 시 메시지 큐를 통하여 데이터를 변형하고 캐시 데이터를 변경합니다.

그리고 Event-driven이기 때문에 CUD 또한 Waiting 없이 빠른 처리를 기대할 수 있습니다.

JAVA EE & Kafka Demo

카페의 주문 프로세스를 기반으로 만든 데모 소스입니다.
Demo Github
Sebastian daschner - Site

API, 마이크로서비스, 챗봇을 사용한 모던 애플리케이션의 개발


수석부사장이신 Kevin Walsh씨가 발표했습니다.

API의 중요성과 마이크로 서비스, 플랫폼 클라우드 서비스 그리고 챗봇을 이용하여 만든 예약 시스템을 소개해주셨습니다.

Apiary를 통한 흥미로운 챗봇 데모도 보여줍니다.

Java 9과 Spring 5로 바라보는 Java의 변화와 도전

토비의 스프링으로 유명하신 토비님!

자바의 미래와 스프링5에서의 변화에 대해서 발표해 주셨습니다.

오랜 자바개발자로써의 자바 발전 과정과 위기에 대해서 발표가 시작되었습니다.
개발 트렌드의 변화로 인해 '자바 별로지 않나'라는 말들을 많이 듣게 됩니다. 그에 따른 오랜 자바개발자로써의 생각과 문제를 분석하시고 설명해주셨습니다.

그리고 스프링5의 변화.

개인적으로 스프링에서의 Annotation 사용에 대해서 뭔가 회의적인 느낌을 항상 가지고 있었습니다.

스프링5의 변화에서 가장 인상적인 부분이 바로 이 Annotation 제거였습니다.

그리고 함수형 프로그래밍을 통한 코드의 간결화까지... 스칼라도 물론 자바긴 하지만 스프링에서 저걸 저렇게 적용해서 쓰는구나! 라는 생각을 했습니다. 개인적으로 큰 놀라움을 느꼈네요.

모던 JavaScript 서버 스택

Pratik Patel씨가 발표했습니다.

자바스크립트는 현재 Best Practices들과 더 나은 런타임으로 인해 쿨하고 힙스터하게 변했으며 참석한 인원 대부분이 소프트웨어 엔지니어이기 때문에 자바스크립트에 인식변화를 목적으로 발표 했습니다(개인적인 생각)

Async, event-driven, every browser support, v8, NodeJS에 대해서
그리고 JVM 역시 JVM -> Rihno (현재) -> Nashorn(다음세대) 으로 가고 있음에 대해서 발표해주셨습니다.

왜 JS인가?

하나의 언어로 브라우저와 서버에 사용 가능하며 빠르고 확장 및 축소 가능.
전통적인 웹앱은 클라이언트와 서버가 다른 언어로 되어있다.

Isomorphic

서버와 클라이언트가 같은 언어를 사용한다.
Client+Server MVC
-> 유연하고 성능이 좋다.

왜 노드인가?

Bevy of tools for Webdev
isomorphic 앱, 가용성 있는 솔루션, 소스코드의 질, ETC..

다양한 모듈.
익스프레스, 그런트, 걸프, 웹팩, 자스민, 브라우저싱크, 등등

Request가 들어오면 싱글 스레드로 Event Loop을 돌려 Posix async threads가 처리한다.
논 블로킹(Non blocking) IO기 때문에 Thread Waiting이 없다.

전통적인 블로킹 쓰레드 모델은 Waiting on file I/O, Waiting on Network Response, Waiting on database등 Blocking wastes cycles가 존재한다.

NodeJS 즉 논 블로킹 모델의 경우 이벤트를 던지면 즉시 논 블로킹으로 처리하며 블로킹 모델과는 달리 중간중간에 텀에 다른 일을 할 수가 있다.

성능 실험 결과

자바스크립트는 초당 1만 개의 요청을 처리한다.

자바는 Vert.X, RxJava등의 Async lib를 사용 할 수 있다.

NPM

30만 개의 노드 관련 패키지가 NPM 저장소에 있다.

Express

기본 서버사이드 프레임워크

이벤트 룹 모델, 비동기, 이벤트, 엄청난 가용성을 강점으로 꼽았다.

tools

socket.io

웹 소켓 지원, http 커넥션 사용
persistent connection
node handles it well
simple on front&back

웹 소켓이 http2 spec에 포함되었다.
프록시 서버 클라이언트 어디서든 쓸 수 있다.

마무리

첫 회사에서 오라클을 사용하기도 했고, 스프링으로 Background Music을 공유하는 사이트를 만들어서 운영했던 경험도 있어 한번 참석해보게 되었습니다.
그래서 처음에는 이걸 가야 하나 말아야 하나 고민했는데 가보길 참 잘했다는 생각입니다.
5년 전 자바 & 스프링을 사용하던 때와 비교하면 개발 패러다임이 많이 바뀌기도 했지만, 그에 발맞춰가는 개발자들의 노력을 느꼈습니다.

훨씬 많은 섹션들이 있었으나 전날 밤샘으로 인해 컨디션 조절 실패! 그로 인해 절반 정도 밖에 듣지 못했네요.

점심도시락 정말 맛있었습니다.


유튜브에서 동시통역으로 제공하는 영상 다시 보기 통해서 보실 수 있습니다.

마지막으로 컨퍼런스장에서 찍은 토비님과 Sebastian Daschner 씨와의 셀피로 마무리하겠습니다.

횡설수설 하느라 이상한 소리를 했었지만 친절하게 응해주신 토비님!