반응형


지난번 Google Summit 에 이어 이번에는 피보탈에서 주최하는 SpringOne Tour 세미나에 참석을 했다.


https://springonetour.io/2018/seoul


우연히 Facebook 타임라인에 뜬 세미나 일정과 Agenda 를 보고 신청을 했었다. Spring 관련 세미나라서 내용에 대한 기대가 컸다. 세미나의 전체적인 주제는 Reactive 와 Cloud 관련 내용들이 많이 있었다. 회사에서 많이 쓰지는 않는 내용들이었지만 그래도 공부하면서 봤었던 유투브에서 봤던 내용들이어서 어느정도 이해할 수 있었다. 그리고 대부분 라이브 코딩이 포함되어 있어서 오히려 더 도움이 됐다. 


세션 요약

1. Reactive Spring with Spring Boot 2.0 - Mark Heckler


화면에는 Reactive Java 라고 되어있지만 다음 페이지에 바로 Reactive Kotlin 으로 변경했다. 라이브 데모 소스도 Kotlin 으로 작성을 했지만 눈으로 따라가는데에는 어렵지 않았다. 내용은 reactive programing 에 대한 내용이었다. 기존에 application 을 유지하기 위해 많은 양의 Thread 가 필요 했다면 이제는 non-blocking 이다 event-driven 을 이용해서 그 Thread 를 좀더 줄일수 있다, 아니 일정 수준으로 계속 유지 할수 있다는 내용 이었다. 그리고 backpressure 라는 내용이 있었는데 그부분은 좀 생소했다. 처음 듣는 단어라서 좀더 찾아봐야 할것 같다. 


참고사이트

http://www.reactive-streams.org/

https://projectreactor.io/

https://github.com/mkheck/FSR


2. Cloud-Native Spring - Josh Long

두번째 세션에서는 Josh Long 의 발표가 있었다. spring 관련 내용을 찾다 보면 이분 내용의 글들이 많이 있었는데 실제로 보니 정말 유쾌한 분이었다. 유머 감각도 있고. 그리고 놀라운것은 코드 작성 속도가 정말 빠르다. 말도 빨리 하는데 코드 작성하는 속도는 말보다 빠르다. 짧은 시간내에 라이브 코딩으로 gateway도 구현하는 라이브 코딩을 보여주었다. 그리고 역시나 처음본 rsocket?? 을 이용해서 코드를 바꿔서 보여주기도 했다. 


3. Spring Cloud Gateway - Younjin Jeong


API Gateway 에 대한 내용이었다. 그중 Netflix 에서 Zuul 을 사용했는데 asynchronous  non-blocking을 지원하기 위해 Zuul 2 를 새로 만들었다고 한다. 그런데 이게 non-blocking 이다 보니 기존 버전과 하위 호환성은 없다고 한다. 완전 새로은 제품이라고 생각하면 된다. Netflix 에서 자기들이 마이크로서비스를 위해서 사용했던 기술들을 라이브러리로 해서 많이 나왔지만 이게 내부에서 사용했던 것들이라서 소스코드가 깔끔하지 않다는 의견이 있었다. 약간 기억이 정확하지는 않지만 Spring 에서는 Zuul 2 는 아직 지원을 않하고 Zuul 1 을 지원한다고 했던것 같다. (정확하지 않음)


그리고 Zuul 을 설명해주면서 Ribbon 하고 비교설명해준게 내게 도움이 많이 됐다. 전에도 이 2개를 헷갈리고 뭔차이지 라는 생각은 하고 있었는데 오늘 설명을 듣고 좀 명확해 졌다.


Zuul 은 외부 트래픽에 대해서 이 트래픽을 어떤 서비스로 보낼지를 결졍해준다. 

Ribbon 은 Zuul 에서 결정된 서비스중 어느곳으로 보낼지를 결정해준다. 


또 Netfilx 에서 자기들이 직접 개발 운영하면서 Gateway 를 설계할때 Concurrent Connection, Thread Count, Latency 를 잘 판단해서 설계를 해야 한다고 했다. 저건 Youtube 동영상을 캡쳐한 화면인데 시간이 될때 한번 봐야겠다. 




참고사이트

https://github.com/spring-cloud/spring-cloud-gateway

https://github.com/spring-cloud-samples/spring-cloud-gateway-sample

http://slides.com/spencer/spring-cloud-gateway

https://github.com/ryanjbaxter/gateway-s1p-2018



4. Cloud Event Drive Architectures with Spring Cloud Stream 2.0 - Jakub Pilimon


세션 중반까지 잘 듣다가 잠깐 졸았던게 후회되는 세션이었다. 대체 왜 졸았을까.......



먼저 개발을 하기 전에 Event Storming 에 대한 이야기 이다. Event Storming 은 실제 현업과 이야기를 하면서 그들이 사용하고 있는 시스템에 대해서 이야기를 하는것이다. 기술적인 내용 없이 어떤 기능들이 있는지 이야기를 하는 부분이다. Event Storming 을 통해서 우리는 그 대화에서 Event 들을 도출해낸다. 


또 Event Storming 을 통해서 도출된 Event 에 대해서 우리가 해야 할 부분은 이 event 가 동작해야 하는 조건들을 추가하는 것이다. 바로 Event 에 대한 트리거를 확인 하는 작업이다. 


하아.. 이 다음이 문제다. 잠깐 졸고 일어났더니 라이브 코딩이 한창이었다. 그런데 내용을 보니 event 를 저장해서 뭔가를 하는 부분이었는데 그게 바로 Event Sourcing 부분이었던것 같다. 정신을 차리고 코드를 따라가보긴 했는데 결과적으로 주된 내용은 어플리케이션에서 트랜잭션이 일어날 경우 바로 DB 에서 처리하는게 아니라 그걸 발생시킨 Event를 하나씩 저장을 해서 처리를 한다는 것이었다.


그럼 왜 이렇게 하느냐에 대한 설명이 나왔다. 이해가 가는 부분도 있고 안되는 부분도 있어서 좀더 공부를 해봐야 할것 같다. 


- 장점

  이벤트를 통해서 모델에 대한 오딧이 가능하다. (이건 좀 이해가 안갔다... )

  이벤트 기반으로 히스토리 확인이 가능하다.

  특정 이벤트 별로 확인 및 분석이 가능하다.

- 단점

  코드가 많고 복잡하다.

  기존에 만들었던 방식과 다르기 때문에 사고의 전환이 필요하다.


참고사이트

https://github.com/ddd-by-examples

https://github.com/pilloPl/credit-cards-producer

https://github.com/pilloPl/credit-cards-consumer

http://pillopl.github.io/


5. Spring, Functions, Serverless and You - Nate Schutta

이번 세션에서는 아키텍처에 대한 내용들이 주제 였다. 세미나 가면 자주 듣던 예인데 전에는 Server를 애완동물처럼 애지중지 하게 다뤘지만 이제는 Server 가 애완동물이 아닌 가축으로 생각되고 있다는 이야기 이다. 다시 말해 Server가 죽으면 교체한다는 의미이다. 

위 사진에서 보여 주듯이 위로 올라갈 수록 Complexity 가 줄어들고 운영하기 좋아지기 때문에 최대한 Serverless 로 올려야 한다는 내용이었다. (4번 세션이후로 점점 집중력이 떨어져서 잘 듣지 못했다..)


6. Spring Boot & Cloud on Pivotal application Service - Younjin Jeong

이번 세션에서는 Pivotal 에서 어떤 서비스들을 제공하고 있고 어떤 플랫폼들이 있는지에 대한 내용이 대부분을 차지 했다. 

내용중에 이부분이 좀 와닿았다. 개발자들이 운영을 하는데 얼마나 시간을 소비하고 있는가. 새로운 기능을 만드는 것보다 대부분의 시간이 기존에 만들었던 거를 수정하고 디버깅하는데에 시간이 사용된다. 이걸 무슨 단어가 있었는데 생각이 안난다. 결과적으로 저렇게 되면 개인에게도 손해고 회사에도 손해이다. 

그래서 필요한게 Full Cycle Developers 다. Netflix 에서 한 말이고 어느정도 와닿는다. 하지만 저렇게 되려면 개인만 해서는 안되고 조직 자체가 그렇게 변해야 하기 때문에 쉬운 일은 아니다. 


Full Cycle Developers at Netflix — Operate What You Build


7. Using Spinnaker to Create a Development Workflow on Kubernetes - Paul czarkowski

마지막 세션에서는 Kubernetes 에 대한 내용이 많이 나왔다. 최근에 자주 보던 내용이어서 많이 집중해서 보지는 않았는데 마지막에 나온 Spinnaker 에 대해서는 좀 찾아 봐야겠다. 


마무리


마지막에 운좋게 당첨되서 "클라우드 네이티브 자바" 책을 받아왔다. 세션 중간에 책 사서 Josh Long 한테 사인 받을까 했었는데 참길 잘했다. ^^ 

앞에서도 말했지만 세션 전체적으로 모르는 내용이 많이 있긴 했지만 중간중간 중복해서 설명되는 내용도 있었고 코드를 따라가다 보면 이해가 되는 내용도 많았다. 역시 개발자는 코드로 대화를 할수 있어야 한다는게 괜한 말이 아니었다. ^^;; 최근 GCP 공부하다 보니 Spring 쪽은 약간 소홀한 면이 있었는데 오늘 세미나를 듣고 보니 잠깐 쉬는동한 공부해야 할게 참 많아졌구나라고 느꼈다. 좀더 분발해야 할것 같고 궁금했던 부분들에 대해서는 빨리 찾아봐야겠다. 


Action Item

Backpressure 란 무엇인지 찾아보자.

rsocket 에 대해서 찾아보자. Facebook 에서 사용한다고 하는데??

Zipkin 사용해보면 좋을것 같다.

Event Sourcing 에 대해서 개념 파악해보고 소스한번 다시 보자.

Spinnaker 에 대해서 알아보자. 



728x90
반응형
반응형

10월 25일 Google Cloud Summit 2018 이 삼성역 코엑스에서 열렸다.


https://cloudplatformonline.com/2018-Summit-Korea-Home.html


페이스북으로 올라온 글을 보고 신청기간에 등록을 해서 참석하게 되었다. 



Google Cloud Summit



세미나 할때마다 자주 가는 코엑스. 처음에 돌아다닐때에는 위를 보지 않아서 오른쪽 그림이 걸려있는지 몰랐다. -_-;;. 

국내에서 처음 하는 Google Cloud Summit 이어서 인지 전에 와봤던 다른 세미나보다 현수막들이 많이 달려 있는 느낌이었다.



행사 일정이다. 파란색의 낯익은 로고를 보고 정말 의외라고 생각했다.




키노트 하는 오디토리움 내부에서 봤던 로고이다. 개인적으로 왼쪽 로고와 색깔이 맘에 들었다. 



Session

(내가 메모하는 것을 귀찮아 해서 들었던 기억력을 더듬어 가면서 적는 것이기 때문에 내용이 정확하지 않을 수 있다. 아니면 내가 잘못 이해했을 수도 있다.^^;)


빅데이터와 데이터 분석 소개



수많은 데이터를 어떻게 하면 의미있는 정보로 만들것인지, 그 만드는 과정이 굉장히 어렵다. 그런 부분을 Google 에서 쉽게 접근 할수 있도록 도와 주고 있다. 그리고 BigQuery를 통해서 수백만건의 자료들을 빠르게 필터링 하거나 원하는 정보만 가져올 수 있다. 



위와 같은 형태로 수집부터 변환, 분석까지 다양한 서비스를 손쉽게 사용할 수 있도록 제공하고 있다. 



클라우드 플랫폼 정글에서 살아남기 : 하이브리드 클라우드 구성 가이드



이 세션에서는 듣다가 느낀점이 좀 많았다. 클라우드 벤더사들도 많고 하나의 벤더만 사용하면 괜찮지만 여러개의 벤더사들을 섞어서 사용할 경우 발생하는 문제점 들이다. (회사에서) 퍼블릭 클라우드 자체를 자주 사용하지 않다보니 이러한 이슈에 대해서 고민 해본적이 없었다. 


통신 비용 : 서로 다른 클라우드 간에 트랜젝션이 발생할 경우 아웃바운드, 인바운드에 대한 비용이 발생한다. 그게 계속 되고 트래픽이 많아질수록 비용은 높아진다.

성능 :  같은 서비스라도 벤더사마다 제공하는 버전이 다르고 최적화가 다를 수 있다. 그럴 경우 결론적으로 하향 평준화 된다. 성능이 낮은 쪽으로 맞춰진다는 이야기 이다. 

보안 : 이건 어떻게 보면 당연한 이야기 이다. 내부에서 발생하는 트래픽이 아닌데.. 물론 암호화를 거치기는 하겠지만 그래도 문제가 생길 가능성이 있다. 



마이크로 서비스 아키텍처 구성하기 : Kubernetes, Istio, Spinnaker, Knative


가장 관심 있었던 세션이었는데 사진 찍는것을 깜빡했다. 마이크로 서비스에 대한 다양한 관점들, 그리고 내가 몰랐던 패턴들에 대해서 설명을 들을 수 있었다. 


죽지만 다시 살아나는 피닉스 서버 패턴. 여기에서 처음 들어봤는데 한번 찾아볼만한 내용이었다. 그리고 몰랐는데 Google Container Registry 에 이미지 올리면 취약점을 자동 스캔한다는 것을 여기에서 처음 알았다. ^^;;



클라우드 앱 디버깅과 성능 모니터링 : Stackdriver



마이크로 서비스 세션에서도 들었었지만 모든 어플리케이션이 컨테이너화 되면서 모니터링, 디버깅에 대한 내용이 강조되고 있다. 그걸 좀더 손쉽게 할수 있도록 도와주는 서비스 이다. 설명을 들으면서 느꼈는데 상당히 매력적인 툴이었다. 특히 디버거나 로깅 같은 경우는 실제 소스를 재배포 하지 않고도 Logger 를 삽입한다던가 디버깅을 해볼수 있다니. 정말 내게는 매력적이었다. 로그 찍을려고 다시 이미지 구워서 올리고 재배포 하고 했었는데. 그럴 필요가 전혀 없다는 거다. -_-;;; 정말 안되는게 없는 세상이다. 



Cloud Study Jam


참여하고 있던 Cloud Study Jam 마지막 미션과제. 발표가 있었다. 



시간표에 이름이 올라와 있는 "피넛버터" 



그래서 이렇게 저 시간에 가서 무사히(?) 팀 발표를 마쳤다. 정말 허접했지만 준비하느라 걱정이 많았었다. 만든건 왜 대체 잘 안돌아가는 건지. -_-;; 대체 외 Pod 간 연결이 안되는건지. 거의 초보인 내게 컨테이너에 뭔가를 해본다는 것 자체가 시간이 많이 걸리는 일이었다. 그래도 그 덕분에 이것 저것 사용을 해보고 해서 많은 공부가 되었다. 

나중에 동영상으로 녹화한거 다시 들어봤는데 민망해서 영상을 못보고 소리만 들었다. -_-;;; 다음에는 좀더 연습을 해야겠다. 


드디어 4개 다 모았다.~^^


기념품들 



이것 말고도 파트어 업체에서 받은 것들도 있지만 그건 제외 했다. 



Action Item


세미나에서 들으면서 몇가지 써봐야 겠다고 생각한 것들을 요약해 본다. 


- Stackdrvier 사용해보기 (디버거, 프로파일러, 로깅등)

- SRE(Site Reliability Engineering) 에 대해서 좀 찾아보자

- BigQuery 한번 써보자.

728x90
반응형

+ Recent posts