ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [2017.04.22] 스프링캠프 2017 후기
    후기/세미나 2017. 4. 23. 01:42

      재작년 Growing Application 모임 이후로는 처음으로, KSUG에서 주최하는 Spring Camp 2017에 참석했다. 떠난지 얼마나 됐다고 3주만에 다시 잠실 삼성SDS 타워에 방문했다.

      올해 말에 나올 스프링5와 관련해서 비동기 프로그래밍, 반응형 프로그래밍 뿐만 아니라, Spring Cloud, Reactive Stream, Spring Boot 등 스프링과 관련하여 핫한 최신 기술을 설명하는 세미나이다. 또한 Spring Camp 최초로 이틀간에 걸쳐 그것도 두트랙으로 나누어서 진행된다고 하였다. (아래 시간표 참고) 나는 일요일은 신청하지 않고, 토요일 Track 1(마젤란 홀)만 쭉들었다.



      토비의 스프링 저자이신 이일민님을 비롯하여, 스프링을 개발하고 있는 Pivotal, 그리고 국내 IT회사들인 카카오, 네이버, 라인, SK Planet, 우아한 형제들 등 쟁쟁한 연사님들이 발표를 하셨다. 사실 스프링 부트나 조금 공부해봤지 반응형이니, 비동기니 하는 것들은 아직 낯설고 공부하지도 않은 부분들이라 걱정이 되었다(실제로 어려웠다). 하지만 토비의 스프링책에 싸인 받을 수 있다는 것에 의의를 두고 참석했다. 



      Keynote (박성철 / 우아한형제들)

      처음으로 박성철님(Growing Application 모임때 총 4개 강연중 2개나 하셨던)이 컴퓨터와 인터넷의 역사 등을 간단히 짚으며 키노트를 발표하셨다. 시간상 급작스럽게 "오래오래 코딩하시고 성공하세요"라고 하시고 마무리 하셨다.


    (내가 태어나기도 전의) 옛날 컴퓨터들이 있었다는 것을 발표하시는 박성철님


      프로세스와 스레드, NIO 그리고 리액티브 스트림 (부종민 / 카카오)

      Non-blocking IO와 리액티브 스트림을 설명하기 위해 친절하게 프로세스와 스레드, 메모리 구조 등을 처음에 설명하신 부분이 좋았다. 알긴 아는데 안다고 하기도 뭐하고, 다시 공부하기도 뭐하다는 부분은 정말 공감이 되었다. (그래도 다시 OS는 제대로 공부 해야되지 않겠나 싶다) 


      Async & Spring, Spring Web Flux (이일민 / 이프릴)

      드디어 등장하셨다. 스프링의 끝판왕. 유튜브 방송도 들어보지 않아서 목소리를 처음 들었는데 생각한것과 조금 달랐(?)다. 


    스프링 사용자라면 누구나 들어보고 읽어본 그 책의 저자 토비님

     

      스프링 비동기나 Web Flux에 대해 모르는데다가 세션이 중급이라 이해하기 어려웠다. 대충 느낌만 알았다고 해야할까?(영상과 발표자료가 올라오면 다시 봐야지)

      처음에 비동기와 동기에 대해 잘 구분해서 정의해야지 그렇지 않으면 나중에 서로 다른 소리를 할 수 있다고 하셨다. 이건 어느 영역이나 해당되는 맞는 말인것 같다. @Async를 사용한 비동기 프로그래밍(@Async를 찾아보니 Spring 3.0에도 있었구나!)과 리턴타입으로 받을 수 있는 Future들에 대한 내용, 기존의 RestTemplate을 비동기적으로 사용할 수 있게 하는 AsyncRestTemplate등을 설명해 주셨다. (뒤로 갈수록 점점 어려워져서 자세한 설명은 어쩔수 없이 생략)


    중간에 나온 퀴즈. 정답은 아래 밑줄친 흰글씨

    정답은 3번. corePoolSize까지 만들고, 일단 큐에 다 쌓는다. 그리고 MaxPoolSize까지 Pool을 만든다고 한다.


      기존에 @Controller, @RestController, @PathVariable, @RequestMapping 등을 잘 사용하는데 왜 Web Flux를 써야 하는지가 인상 깊었다. 그 이유는 모든 웹요청 처리들을 명시적인 코드로 작성하여 테스트가 용이해지는 것이고, 함수 조합을 통해 편리하게 구성이 가능하고 추상화에도 유리해서라고. 하지만 단점은 함수형 스타일이 익숙치 않으면 어렵다는 것. 잘 몰라도 따라 해보고 돌려 보는 것도 좋지만, 프로덕트 레벨에서는 정말 잘 모르면 쓰지 말아야 하는 것은 누구나 동의할 것이다.


    중간 중간 중요한 내용의 슬라이드들


      세션 중간 쉬는 시간에 가서 책에 사인받고 같이 사진도 찍었다. 다음 발표 준비하셔야 하는데도 친절히 싸인도 해주시고 사진도 찍어주셨다.

    책 다 읽어보았냐는 질문에 앞쪽만 많이 봤다고 대답했다 ㅠㅠ


    싸인도 받았겠다,이제 다 읽기만 하면 되겠다!


      Spring Cloud Data Flow (정윤진 / Pivotal)

     

    Pivotal의 정윤진님의 발표 시작


      기술 위주라기보다는 사례발표 같은 느낌의 발표라 편안한 마음으로 들을 수 있었다. 아마존의 경우 7초마다 한번씩 배포가 일어나고 있다고 한다.(수치를 잘못 들은 걸수도 있으나, 빠른 배포의 중요성을 의미) 쿠키런을 만든 데브시스터즈의 경우도 전날의 피드백을 반영하여 반영하는 등 매우 빠른 피드백과 반영을 경험하셨다고 한다. 또한 흘러들어오는 데이터는 점점 많아지고 이를 분석하여 추천, 예방, 방지 등의 분석 등은 거의 필수가 되고 있다. 이런 상황에서 발빠르게 서비스를 재배포하고 데이터를 컨트롤 하는 것이 매우 중요하다. 이를 도와주는 툴이 바로 Spring Cloud Data Flow. 


    스프링 부트들을 이용한 어플리케이션들을 조합하여 메시지 큐에 쌓은 다음 데이터를 처리 분석하여 알려주는 것 까지 모두 가능하다고 한다.


     비동기 어플리케이션, 어떻게 모니터링 할 것인가? (이건희 / LINE+)

    초초보 ver.인데도 다 이해가 안되는 나는 초초초보


      오픈소스 모니터링툴인 Scouter의 커미터이신 이건희님의 마지막 세션이었다. 비동기 프로그래밍의 경우 프로그램의 순서가 언제 어디로 어떻게 튈지(?) 몰라 디버깅 하기도 쉽지 않고, 작성하기도 쉽지 않다. 그런 이것을 모니터링하는 것은 얼마나 더 어려울까 하는 생각이 들었다. 본인의 삽질기를 통해 조금씩 문제를 해결해 나가는 과정을 설명하셨다. 모니터링툴의 경우 원래의 소스에 한줄도 추가하지 않는데 어떻게 메소드의 시작과 끝 같은 것들을 알 수 있을까? 방법은 바로 Bytecode Instrumentation(줄여서 BCI)이다. 즉, .class파일로 컴파일된 바이트코드에 필요한 필요한 바이트코드를 심어서 기능을 실행하는 것이다. (AOP의 방법 중 하나가 Bytecode를 삽입하는 것으로 알고 있다)


      비동기 관련 세션이 여러개 있는 걸 보니 서버의 성능를 최대한 활용할 수 있는 비동기 프로그래밍이 대새긴 대새인가보다. 근데 토비님이 하신 말씀중에 "잘 모르면 비동기 프로그래밍 하지마라"가 오늘 가장 크게 남은 말이다... 차라리 서버를 좋은거 쓰면 된다고!


      공부할 것만 잔뜩 얻어가는 시간이었다. 자바만해도 이렇게 새롭고 좋은 기술들이 쏟아져 나오는데, 훌륭한 개발자는 대체 어떻게 되는 걸까! 개발왕은 언제쯤 ... 그리고 이런 컨퍼런스 발표를 들을 때마다 가끔 드는 생각은 "연사님들은 어떻게 이렇게 구체적이고 자세하게 알고 발표하는 걸까?"이다. 저정도 연차(보통 10년 이상?)가 되면 나도 가능한 것인지, 아니면 정말 특출난 재능이 있으신 것인지, 그것도 아니면 끊임없이 공부하고 노력하는 것인지 궁금하다. 나도 노력하면 저렇게 될 수 있겠지?

    댓글

Designed by Tistory.