[후기] SpringOne Platform re:Cap


SpringOne Platform re:cap 밋업을 다녀왔다.

SpringOne Platform 이라 하면 전자정부 표준프레임워크 spring framework를 개발 및 컨설팅 하고 있는 Pivotal 에서 주최하는 컨퍼런스이다. 올해 컨퍼런스는 8월 1일부터 4일, 총 4일동안 진행되었고, 올해 발표된 스프링 관련 기술부터 내년 발표될 실험적인 기술까지 다양한 주제에 대해서 다뤄졌다고 한다.

Youtube 에도 SpringOne Platform 2016 이 올라오고 있으니 필요한 세션들을 찾아보자.

오늘 다녀온 SpringOne Platform re:Cap은 Pivotal Korea에서 주최한 밋업으로 SpringOne 컨퍼런스에서 발표된 주제중에 몇가지 포인트 되는 세션들을 “한국말”로 소개해주셨다. (넘나 좋은 것!)

그리고 migrating to cloud native application architectures 요 책도 나눠주었는데. 이건… 나중에봐야징ㅋ

시간이 지나기 전에 오늘 들은 귀중한 지식들을 짧게 정리해보고자 한다.

[1] Spring framework 5

[2] Spring Boot 1.4

[3] Spring Reactor

[4] Spring Cloud Stream / Task / Data Flow

아래 내용은 들으면서 후다닥 적은 내용이라 많이 부족합니다. ㅠㅠ
슬라이드 제공받는대로 함께 업데이트 하도록 하겠습니다.

1. Spring framework 5

ex)

@PostMapping()
public Mono<Account> getAccount (@RequestBody Mono<Account> mono){
     return mono.then(account ->  this.repository.save(account))
}

2. Spring Boot 1.4

major update

  1. spring 4.3
  2. third party lib upgrade - 제티, 톰캣 등등
  3. new auto-configuration support - 더 많은 라이브러리 redis, Jta, caffeine(cache) elasricsearch jest ? 등등
  4. startup failures 분석 - 리포팅 기능 추가.
    ex) 같은 포트가 이미 떠있다와 같은. 더 보기 편해짐
  5. @SpringBootTest - @springpplicationConfiguration, contextconfiguration, integrationtest, webintegrationtest 등 다 통합
  6. @MockBean 추가
  7. slice ,, @jsonTest, @WebMvcTest 등 역할별로 테스트 해 고거랑 관련된 설정만 가지고 와서 퍼포먼스 향상 @RestClientTest, @DataJpaTest SpringRestDoc

demo

new features

1. @ConfigurationProperties 을 통해서 properties에 잇는 정보를 그대로 가져올 수 있다.
2. error code define >> resources/static/error/404.html 바로 디파인 해줌
3. test 강화
4. Autowired를 따로 안해줘도 알아서 inject
@Autowired // << 생략 가능
public class someclass(SomeService someServce) {
}
5. in-memory-cache
- @cacheable("value") // << 이렇게만하면  캐시 하겟다
- @EnableCaching(proxyTargetClass=true)  // << 캐시 쓰겟다
6. info end-point
7. RestDoc
@AutoConfiguraeRestDoc(outputDir-target/~~)

테스트 돌리면 맨 마지막에 doc이 생성된다.

target/generated-snippets
target/generated-docs // 여기에 들어가서 보면 html로 나옴

3. Spring Reactor

reactive programming이란?

등장 배경

— (java8) Future

CompletableFuture
     .somethingcallback()
     .somethingcallback2();

Reactive Streams

Reactive Manifesto

서킷브레이커 패턴

LMAX

리액티브 프로그래밍

ASYNC!!

기존 동기식

User user = userRepository.findById()
Future<User> findById(String id) <Del>throws IOException </Del>

future.get(); // 을 하게 되면 결국 여기서 block 이 되니 진정한 비동기가 아니다 .

CompletableFuture를 통해 완벽한 비동기

CompletableFuture<User> future
future.whenComplete(???)

CompletableFuture<Void> save(User user); // void임!

Reactive Stream

java 8 stream api

Reactive stream

개념

  1. Mono
    • 기거나 아니거나 (1 or 0)
  2. Flux
    • 끊임없는 데이터 스트림
    • interval, 중간 operator를 둬서 처리.
    • 스프링 클라우드에 대해서
public interface UserRepository {
     Mono<User> findById(Long id);
     Flux<User> findAll();
     Mono<Void> save(User user);
}

repository.findall()
               .filter()
               .map()
               .useCapacity(2) // 한번에 두개만 받것다. (이거 없으면 by default consume without back-pressure )
               .log() // tapping
               .subscribe(user -> {}) //

Reactive Web application

Single<User>
Obserbable<User>

Reactive Http Adaption

return new User(id) ; //synchronouse, non-blocking method
return Mono<User> // Async, non-blocking method

예제

experimental

4. Spring Cloud Data Flow

전통적인 data analysis

data > source > processing > processing processing > destination > data

spring cloud stream

spring cloud data flow가 하는일

예제

스프링 클라우드 웹 UI

롤백처리