개발자 일상
Spring One Tour Seoul 2018 by Pivotal
devsh
2018. 11. 22. 17:56
728x90
반응형
Spring One Tour Seoul 2018 by Pivotal
Spring One Tour Seoul 2018 by Pivotal 행사에 참여하고 작성한 후기
PCF (Pivotal Cloud Foundry)
- Pivotal 에서 서비스 하고 있는 클라우드 서비스
- https://pivotal.io/platform
- https://ko.wikipedia.org/wiki/%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C_%ED%8C%8C%EC%9A%B4%EB%93%9C%EB%A6%AC
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
- 개발자들이 운영에 얼마나 많은 시간을 소비하는지 ?
- 코드 작성,유닛테스트,기능 추가 보다 운영업무가 더 많은 시간을 소비함. (슬픈현실 ㅠㅠ)
- You build it, you run it and you support it
- 개발을 했다면 운영과 배포까지… devops
- 개발을 했다면 운영과 배포까지… devops
- Full Cycle Developers
- Netflix 가 어떻게 devops 를 실천하는지 테크블로그에 기고
- https://medium.com/netflix-techblog/full-cycle-developers-at-netflix-a08c31f83249
- Netflix 는 “Operation”팀을 -> “Cloud Platform” 이라는 팀으로 변경
- 클라우드환경에 맞는 도구들을 만드는데 집중
- 클라우드환경에 맞는 도구들을 만드는데 집중
- 위로 올라갈수록 개발자 친화, 아래로 갈수록 인프라 친화
- Pivotal Cloud Foundry Family
- Pivotal Application Service (PAS) App Runtime
- Chaos Engineering 최근에 각광받고 있음
- 대표적으로 Chaos Monkey
- 일부러 장애를 발생시켜서 서비스에 어떤 영향을 미치는지 사전에 체크할수있도록 함
- https://github.com/Netflix/chaosmonkey
- 12 Factors Apps, Security SSO, 배포, Configuration 등을 Cloud Foundry 에서 지원
- 즉 PCF는 현대의 Spring Boot Application 에 특화된 Cloud 플랫폼
728x90
반응형