컴퓨터 앞에서 벗어나 많은 개발자가 얼굴을 익히고 이야기를 나누며 즐기는 축제같은 컨퍼런스!
쉼없이 쏟아져나오는 수많은 기술들 속에서 참가자들이 모여 다양한 경험과 정보를 나누고 공유하는 컨퍼런스!
스프링 캠프에서 함께하는 많은 개발자들이 서로 얼굴을 익히고 정보를 공유하고 인연을 맺는 컨퍼런스!
이 프로그램은 Reactive를 여행하는 히치하이커를 위한 안내서의 첫 페이지입니다.
리액티브를 이해하기 위해 비동기 관련 기저 지식인 프로세스와 쓰레드에 대해 알아보고 자바의 NIO(New IO 그리고 Non-blocking IO)에 대해 이야기하고 마지막으로 왜 리액티브가 필요한지 살펴보는 시간을 갖겠습니다.
소프트트웨어는 데이터와 별개로 존재하지 않습니다. 현대의 서비스들은 대량의 데이터를 실시간에 가깝게 처리하여 현재 서비스에 어떤일이 발생하고 있는지, 그리고 다양한 목적을 위해 어떻게 데이터 처리 과정을 수정하고 이를 서비스에 반영하는 요구가 있으나 유연하고 확장성 있게 처리하기 힘든것이 사실입니다.
스프링 클라우드 데이터 플로우는 서비스 애플리케이션들이 어떻게 스트림을 연동하고, 원하는 데이터 처리 과정을 추가하고 제거할 수 있는지에 대한 '데이터 마이크로 서비스' 의 구현을 위한 도구입니다.
본 세션에서는 인-메모리 데이터 그리드와 데이터웨어 하우징등을 사용하여 각 스프링 마이크로 서비스 애플리케이션이 어떻게 데이터를 연동하여 처리할 수 있는지 알아 봅니다.
하나의 요청이 단일 스레드에서 동작하는 전통적인 서블릿 기반 웹 어플리케이션은 특별한 노력없이도 APM등의 도구를 통해 쉽게 모니터링 할 수 있었습니다.
서블릿 3.0 부터 등장한 비동기 서블릿과 Spring 프레임워크와 같은 어플리케이션 프레임워크등을 통해 다중 스레드를 보다 쉽고 우아하게 다루게 되었으나 어플리케이션 모니터링 관점에서는 또 다른 도전을 맞이하게 되었습니다.
이 프로그램에서는 APM에서 사용하는 전통적인 웹어플리케이션 모니터링의 원리와 왜 비동기 어플리케이션 모니터링이 어려운지를 얘기하고 이를 극복하기 위한 고민들을 공유합니다.
Spring DATA project 중 하나인 Spring DATA REST의 소개와 사용법, 장단점 등을 살펴볼 예정입니다.
이 발표를 듣기 위해서는 아래와 같은 기술을 사용해 보셨거나 무엇인지 알고 계셔야 합니다.
- REST API
- Spring MVC
- Spring DATA JPA 또는 JPA(hibernate, 그 외 ORM)
현대의 불명확성이 높은 환경에서 올바른 제품을 만들기 위해 반드시 필요한 Lean과 Agile의 조합에 대해서 짚어보고, 실제로 이 모델을 가장 잘 전파하고 있는 Pivotal Labs 샌프란시스코 본사에서 경험한 소프트웨어 제품 개발 경험담을 공유한다.
Enterprise 규모의 기업에서 대내외 시스템간 연계를 위해 Spring Integration을 활용했던 사례들을 공유해보려고 합니다.
바딘이 제공하는 자바 API로 구현 한 후 독특한 컴파일 과정을 거치면 스타일이 살아 숨쉬는 웹 화면이 만들어 지게 된다.
지긋 지긋한 자바스크립트 에러는 더 이상 찾아 볼 수 없고 오로지 자바 컴파일 오류만 남게 된다.
IDE의 디버그 브레이크 포인트는 서버 측 코드인지 클라이언트 측 코드인지 헷갈리게 된다.
바딘 안에서는 그냥 하나의 자바 애플리케이션을 개발 하는 것처럼 개발하면 될 뿐이다.
본 프로그램에서는 바딘이 무엇인지, 어떻게 동작하는지, 어떻게/어디에 사용하여야 하는지, 왜 사용하여야 하는지에 대해서 알아봅니다.
현재 클라이언트to서버, 서버to서버의 통신은 REST API가 천하통일을 한 느낌입니다.
하지만 구글은 REST API 대신 gRPC를 사용합니다.
gRPC가 무엇인지, 어떤 점이 좋은지, 왜 지금 알아야 하는지, 어떻게 쓰는지 gㅏ볍게 알아봅니다.
10여년동안 Spring, KSUG에서 개발자로서 어떤 영향을 받았는지를 돌아봅니다.
Spring 5 에 Reactive Programming (Reactor) 채용으로 인해서 이전 버전과의 차이를 다양한 예를 통해서 설명 합니다.
Web Flux, Spring Data 등의 예제 등을 통해서 Spring 5 의 달라진 모습을 확인 하실 수 있습니다.
이벤트 소싱은 도메인 모델에서 발생하는 모든 이벤트를 기록하는 저장 기법이다. 이벤트 소싱은 클라우드에서 구동되는 메시지 중심의 분산 시스템에 적합하기 때문에 점점 주목받고 있다. 하지만 기존의 데이터 저장 방식과는 많이 다르기 때문에 진입장벽이 높다.
이벤트 소싱(Eventsourcing)과 CQRS(Command & Query Responsibility Segregation) 패턴의 개념과 구동 원리에 대해 간단하게 살펴보고 이를 회원, 상품, 주문으로 분리된 e-commerce 마이크로 서비스 아키텍처 상에서 springboot를 사용하여 구체적으로 무엇을 어떻게 구현하고 각 도메인간 이벤트 전달 및 이벤트를 어떻게 처리하고 사용하는지 구현 코드를 설명하고 이를 demo를 통해서 확인해 보는 프로그램입니다.
- Java 스레드의 동작 특성 간략히 훑어보기
- CPU 바운드와 I/O 바운드 차이 비교
- 자바 8 람다식과 고계 함수
- ReactiveX 소개
- ReactiveX 역사
- 전형적인 RxJava 사용 예제 몇 가지
- RxJava 내부 실행 구조
- RxJava 단위 테스트
데이터베이스 테이블의 데이터를 변경(UPDATE)하면 가장 최근 상태만 알 수 있습니다. 만약 과거 특정 시점의 데이터를 보고 싶다면 별도의 히스토리 보관용 테이블을 만들고, 원본 테이블의 데이터가 변경될 때 마다 히스토리 테이블에 데이터를 누적해서 쌓아두면 됩니다.
그런데 개발자 입장에서 이런 과정은 너무 반복적이고 지루합니다. 원본과 거의 유사한 히스토리 테이블을 생성해야 하고, 원본이 등록, 수정, 삭제될 때 마다 히스토리 테이블에 데이터를 누적해서 저장해야합니다. 이렇게 히스토리를 관리해야하는 테이블이 많아질 수 록 더 많은 코딩을 해야합니다.
스프링 데이터 JPA의 확장 프로젝트인 스프링 데이터 Envers와 하이버네이트 Envers를 활용하면 지루하고 반복적인 히스토리 관리를 어노테이션 하나로 아주 단순하게 해결할 수 있습니다.
10여년동안 Spring, KSUG에서 개발자로서 어떤 영향을 받았는지를 돌아봅니다.
다들 DevOps 를 적용하고는 있지만 어디까지가 DevOps 인 것인지, 어떻게 얼마나 바꾸고 적용할 것인가 결정하는 것은 쉽지 않습니다.
본 세션은 DevOps 를 왜 적용해야 하는가? 라는 질문을 시작으로 DevOps 를 Culture, Think, Code, Deliver, Run, Manger, Learn 의 7단계로 나누어 차근차근 짚어봅니다.
Spring은 Spring Data JPA 프로젝트를 통해 Java 진영의 ORM 기술 표준인 JPA를 손쉽게 적용할 수 있는 방법을 제공하고 있습니다.
이번 세션에서는 Dooray! 서비스를 개발하면서 Spring Data JPA를 도입하고 실제 적용 과정에서 겪었던 여러가지 문제와 해결 경험을 공유하려고 합니다.
- 이 세션은 JPA에 대한 기본 지식이 필요합니다.
대용량 트래픽 처리를 위해서는 Key-Value솔루션을 이용한 DataBase Server와의 IO를 피하는 방식과 Static Contents를 이용하는 2가지 방식이 있습니다. 단순히 Contents를 제공하기 위한 서비스에서는 후자의 방식이 Resource를 절약하고 더 높은 성능을 보장받을수 있는데요. 다수의 Cache서버를 사용할 경우 Contents의 갱신을 실시간으로 하기는 어렵습니다. 어떻게 하면 실시간으로 Contents를 갱신할수 있을까? 라는 고민으로 출발해 Spring Cloud Stream을 이용해 실시간으로 Contents를 갱신할수 있는 시스템을 만들어본 경험을 공유합니다.
Spring Boot의 등장으로 Spring Framework에서 더 이상 반복적이고 귀찮은 설정과 구성을 하지 않을 수 있게 되었습니다.
그렇다면 우리는 정말 그냥 개발만 하면 되는 것일까? 하는 물음에서 이 강연이 시작되었습니다.
Spring Boot를 이해하지 못하면, Spring Framework가 더 어렵게 느껴질 것!
이 프로그램에서는 Spring Boot에서 무슨 일이 일어나고 있는지, 무엇을 해주고 있는지, 그것을 어떻게 알 수 있는지에 대한 내용을 다루려고 합니다.
Lagom은 ‘reactive microservice’ 개발을 지원하기 위해 lightbend사에서 만든 오픈소스 프레임워크입니다.
Lagom은 JVM 위에서 구동되며 Java 와 Scala(1.3.0 이상) 언어를 지원합니다. 개발 초기부터 'Reactive Manifesto(리액티브 선언문)' 원칙에 기반하여 설계 되었기에 시스템의 응답성(Responsive), 탄력성(Resilient), 유연성(Elastic), 메시지 구동(Message Driven) 측면에서 많은 장점을 갖고 있습니다.
이 프로그램에서는 Lagom의 개요와 아키텍처, 간단한 데모를 통한 서비스 개발방법에 대해 다룰 예정입니다. 평소 reactive system에 관심이 있으셨거나, 갈수록 늘어만 가는 대용량 데이터의 효율적인 처리에 대해 고민하고 계셨던 분들께 조금이나마 도움이 되리라 생각됩니다.
※ 행사장은 삼성SDS타워 서관 후문으로 들어오실 수 있습니다.
"한국 스프링 사용자 모임(Korea Spring User Group: KSUG)"은 스프링프레임워크(SpringFramework)에 대한 정보를 공유하는 모임입니다.
2007년 4월 1회 세미나를 시작으로 지금까지 정기 세미나와 비정기 모임을 통해 오픈소스 스프링 프레임워크와 관련 기술을 주 관심사로해서 온라인과 오프라인에서 각종 토론과 문제 해결, 새로운 소식 공유해왔습니다.
2007년 처음 닻을 올린 이래 수많은 Java, Spring 개발자들이 끊임없이 생각을 공유하고 이야기를 나누었고, 어느덧 10년이라는 시간이 지났습니다.
KSUG가 열 번째로 맞는 2017년 봄에도 어김 없이 스프링캠프 라는 멋진 항해를 준비하고 있습니다.
이런 자리에 참여하시고 함께 만들어가신다면 지난 스프링캠프 때와는 또 다른 좋은 추억과 의미 있는 시간을 만드실 수 있으실 겁니다.