728x90
반응형

Spring One Tour Seoul 2018 by Pivotal

Spring One Tour Seoul 2018 by Pivotal 행사에 참여하고 작성한 후기 


PCF (Pivotal Cloud Foundry)

1. Full Stack Reactive Kotlin! with Spring Framework 5, Spring Boot 2, & Project Reactor

연사 : Mark Heckler

  • Kotlin 사용 이유
    • Kotlin 은 자바에 비해 새로운 것들을 더 빠르고 자유롭게 구현할수 있게 한다. 또한 좀 더 함축적이고 효율적이라 생각한다.
    • 현재 스프링 5 버전 이후로 Kotlin과 자바를 동등한 수준으로 개발 하고 있다.
    • 메서드가 없다. 오직 함수만 있을뿐 .. 함수 키워드는 fun 그래서 Kotlin은 fun 하다!
  • 리액티브 프로그래밍이란 ?
    • non-blocking, event-driven 어플리케이션 구현에 용이함
    • 비동기 프로그래밍을 구현할때 가장 어려운 점은 콜백헬이다. 그런점에서 리액티브 프로그래밍은 좀더 읽기 쉬운 readable 프로그래밍을 가능하게 한다.
    • 리액티브 프로그래밍은 적은 수의 스레드를 사용하여 더 많은일을 적은 자원으로 구현할 수 있게 한다.



  • Reactive Streams : 4 interfaces
    • Publisher<T>
    • Subscriber<T>
    • Subscription
    • Processor<T,R>

  • Reactive Streams initiative
    • 레드햇, 피보탈 등이 기본 스펙을 합의함

  • Project Reactor
    • 컨셉 : 기존 스프링, 자바8 이상의 기술과 경험을 그대로 녹여 사용할 수 있도록 구현하고있다. (새로운 지식에 대한 거부감이 없도록)
    • Reactor에서도 Java8 과 마찬가지로 스트림의 연결에서 map, flatMap등은 Lazy 하게 동작하므로 Terminal Operator (Java8의 경우 collect 등) 가 필요함 (e.g. subscriber)

  • IT Cloud by Netflix 추천!!!!!
    • 개발자들의 눈물과 웃음이 녹아있는 드라마라고함.

  • Coffee service with Kotlin, Reactive and Netty



2. Cloud-Native Spring

연사 : Josh Long

  •  “클라우드 네이티브 자바” 서적에서 포함하지 못한 몇가지 예제를 빠르게 보기


 

  • Spring Boot 2.1 부터 Ascii art 를 gif 이미지로 사용할 수 있음
    • 대신 스타터 타임에 30초 이상 더 걸림 .. ㅋㅋㅋㅋ

  • RedisRateLimiter를 사용하여 RateLimit 을 사용할 수 있음
    • 동시접속제한 가능
    • 일종의 쓰로틀링 기법

  • 핵심 키워드 Flux & Mono 
  • HTTP 에서만 Reactive 를 사용할 수 있는것이 아니다.
    • SaleForce.com 클라우드 CRM 에서 GRPC 컴파일러에서 리액티브를 사용
    • Facebook.com rsocket 프로토콜 Java 클라이언트에서 리액티브를 사용
    • SpringBoot 2.2 에서 별도 add-on없이 rsocket을 native로 지원할 예정

  • 자바 챔피언 Josh Long 과 인증샷!



3. Spring Cloud Gateway

연사 : Younjin Jeong

  • 해당 주제는 Spencer Gibb의 Introducing Spring Cloud Gateway 를 한국어로 재발표

 

  • What is an API Gateway ?
    • 현대적 마이크로서비스 어플리케이션은 L7만으론 부족한 기능들이 존재함
    • 특징들 : Routing, Canary-ing, Security, Monolith Strangling, Monitoring, Resiliency

  • Side-car pattern, Proxy pattern 을 합친것을 Mesh pattern
    • 애플리케이션이 존재하는 모든 서버안에 Proxy 가 존재
    • inbound, outbound 모두 proxy를 사용
    • 몇가지 오픈소스 제품들이 나와있음

 

  • 넷플릭스 OSS Zuul
    • 넷플릭스 전체 트래픽을 받고 있음.
    • 뛰어난 성능, 오픈소스
    • 최근 Zuul2 가 발표됨
    • Zuul1은 Servlet 기반의 blocking IO를 사용했음
    • Zuul2는 비동기적 방식 non-blocking IO를 지원함
    • 단점은 Zuul1 과 Zuul2 간의 하위 호환성이 없음 (완전히 새로 개발됨)
    • 그리고 넷플릭스는 자사 OSS 에 대해 적극적으로 maintain 하지 않는다. (물론 자사에서 서비스 중인 제품은 예외)

  • Spring Cloud Gateway
    • 현재 버전에선 Zuul1,2 는 사용하지 않음.
    • 예전 버전에선 Zuul1을 내장하였으나, Zuul 자체가 넷플릭스 비즈니스에 특화되어 개발되어있기때문에 내부적으로 추상화하기 힘들다는 단점이 있었음. (코드더럽..)
    • Netflix Ribbon 을 같이 사용할 수 있다.
    • API Gateway (e.g. POST /login HTTP 1.1 or GET /contents HTTP 1.1 ) -> Netflix Ribbon (Zone Available Latency check) -> API Endpoint

 

4. Cloud Event Driven Architectures with Spring Cloud Stream 2.0

연사 : Jakub Pilimon

  • Event Storming?

 

    • 개발을 하기 위해선비즈니스 도메인에 대해 우선 이해해야함. 이에 대한 방법을 일컫는다.
    • Card Withdrew -> Limit Assigned -> Card Repaid -> Billing Cycle Closed
    • 위에 비즈니스에서 도메인을 도출 하면 Withdraw, Assign Limit, Repay
    • Withdraw : if there is enough money
    • Assign Limit : if it wasn’t already assigned
    • 현업 과 개발자 간 공통된 언어로 통일
    • 같은 용어를 사용하더라도 각각의 정의가 다를 수 있음.

 

 

  • Event Sourcing
    • 특정 객체를 저장하는것이 아니라, 변경내역에 대한 이벤트들을 저장한다.
    • 변경내역에 대해 Audit(감사) 하기 쉬워진다.
    • 특정 시점에 문제가 발생하였을경우 state를 변경하여 해당 시점으로 테스트가 가능하다.

5. Spring and Pivotal Application Service

연사 : Younjin Jeong

  • 개발자들이 운영에 얼마나 많은 시간을 소비하는지 ?
    • 코드 작성,유닛테스트,기능 추가 보다 운영업무가 더 많은 시간을 소비함. (슬픈현실 ㅠㅠ)



  • Netflix 는 “Operation”팀을 -> “Cloud Platform” 이라는 팀으로 변경
    • 클라우드환경에 맞는 도구들을 만드는데 집중

  • 위로 올라갈수록 개발자 친화, 아래로 갈수록 인프라 친화


  • Pivotal Cloud Foundry Family


  • Pivotal Application Service (PAS) App Runtime 
  • Chaos Engineering 최근에 각광받고 있음
  • 12 Factors Apps, Security SSO, 배포, Configuration 등을 Cloud Foundry 에서 지원
  • 즉 PCF는 현대의 Spring Boot Application 에 특화된 Cloud 플랫폼


728x90
반응형

+ Recent posts