woniper

[Spring Camp 2015] 컨퍼런스 후기 본문

이야기

[Spring Camp 2015] 컨퍼런스 후기

woniper1 2015. 4. 19. 17:55

  매년 열리는 Spring Camp가 올해로 3번째다. 내 기억으로는 올해가 가장 뜨거운 접수 경쟁을 했던거 같다. 물론 나는 나오자마자했지만 onoffmix에 참석자와 대기자를 보니 거의 1:1이다. 약 251명을 뽑았는데 대기자도 그정도는 되는듯하다. 


세션 시간표


spring.io를 통해 배우는 spring 개발사례 (skp, 이대환)

  이 세션은 발표자분께서 처음 스프링을 접하면서 어려웠던 점, 공부 방법, 그리고 sagan이라는 spring.io의 sample  오픈 프로젝트로 공부를하고 간단하게 분석하는 시간이였다.

발표자분 경력이 조금 특이한게 비보이를 하시다가 개발자를 하고 계시다는... 신기했다.

sagan 프로젝트는 스프링을 사용해서 여러가지 기술을 접목시킨 훌륭한 스프링 예제가 될 수 있는 프로젝트다. 아 그리고 이 프로젝트는 실제로 spring.io의 사이트 프로젝트다. 실제로 sagan 프로젝트를 실행해보면 사이트가 열리는걸 확인 할 수 있다. 이 프로젝트를 공개한 이유 자체가 좋은 예제를 공개하기 위함이라고했고, 스프링을 공부하거나 처음 접하는 개발자에게는 좋은 예제가 될 것 같다. 나도 한번봐야겠다.

원래 발표자분은 프론트 개발자였고 실제 스프링을 접하고 공부한지는 3개월 밖에 안됐다고 했다. 그래서 그런지 sagan의 프론트를 중심으로 내용을 이어가는게 보였다. 



JPA 영속성 컨텍스트(KSUG, 김영한)

  이 세션은 들을까 말까 고민을 많이 하다가 들었는데, 내용 자체가 중급이라고 나와있었고 JPA를 깊게 써보지 못했기 때문이다. 그래도 들었다. 근데 좋았다. 이해가기 쉽게 잘 설명해주셨다.

  JPA 영속성 컨텍스트에 대해서는 자세히 쓰지 않겠다.(내가 잘못된 정보를 전달 할 수 있기 때문에...) 간단하게 설명하자면, JPA 영속성 컨텍스트란 우리가 스프링으로 개발할때 아주 많이 사용하는 mybatis와 다르게 디비에 영향을 주는 쿼리를 날렸을때 바로 디비에 적용되지 않고 1차적으로 캐쉬 처리를한다. 또 다른 여러가지 과정을 거치며 디비에 저장되는 흐름이 있는데 이 흐름을 잘 이해하지 못하고 JPA로 개발을 한다면 예상치 못하는 결과를 가져다주기 때문에 잘 이해하고 사용해야한다. 그리고 프로젝트 환경마다(JavaSE, JavaEE, OSIV) 영속성 컨텍스트 동작이 모두 틀리게 때문에 이 부분도 잘 이해해야한다. 

  발표 자체는 좋았는데 많은 내용을 전달하려다보니 시간이 부족해서 조금 아쉬웠지만, 그래도 잘 이해가서 좋았고 중간에 발표하는 맥북에 음료수를 좀 흘리셨다.ㅜㅜ

아무튼 굉장히 굉장히 진행 속도가 빨랐지만 대부분 이해가 잘 가고 걱정했던것 보다 재밌던 세션이다.





스프링 부트와 로깅(네이버랩스, 백기선)

  발표전에 첫번째 세션인가? 끝나고 기선님 보고 반가워 인사를 드렸다. 저 기억나시냐고...ㅋㅋ 당연히 기억 못하시겠지 멀리서만 봤으니까 작년 11월말쯤 봄싹 세미나 할 때 후기 내용 보면 알겠지만 저런 인연이 있었다. 내 후기 글도 보시고 아무튼 반가웠다. 

이번 세션은 스프링 부트가 어떤 로깅 라이브러리를 사용했는가, 그리고 어떻게 설정하는가, 로깅에 대한 이해를 돕기 위한 세션이였다. 스프링 부트는 기본적으로 SLF4J와 Logback을 사용하는데 어떻게 설정되어있나 살펴보았고, Apache Commons Loggin(JCL)을 설명해주셨는데 JCL사용을 꺼리는 이유를 설명해 주셨다. 

  • 자바 클래스로더의 기본 동작 방식
  • 서블릿 컨테이너의 클래스로더 동작 방식
  • 클래스로더에 의존적인 방법으로 구현체를 찾는다.

이런 문제점 때문에 사용을 꺼린다고한다. 그리고 스프링 부트에 로깅 의존 라이브러리 추가/수정/삭제 하는 방법 그러니까 maven을 이용해서 사용하는 방법을 알아봤고 부트에서 로깅 관련된 설정하는 방법을 배웠다.

  • loggin.path = ./log -> 로그 내용을 *.log 파일로 저장한다.
  • loggin.level.org.springframework = OFF -> org.springframework 로그를 제외한다.
  • loggin.level.org.springframework.web = DEBUG -> org.springframework.web에 관련된 로그를 DEBUG 내용으로 설정해 찍는다.
  • loggin.config = 설정패스 -> 설정한 패스에 로그 설정 파일을 지정한다.





Spring Boot를 적용한 전사 모니터링 시스템 Backend 개발 사례 (skp, 허제민)

  skp 사내에서 Planet Mon(이하 PMon)이라는 모니터링 시스템을 만들면서 일부 구현을 spring boot를 적용한 사례를 알아보았다. 개인적으로 이런 관리자 페이지 같은걸 만드는걸 좋아하는데 재밌어 보였다. 스프링 부트를 사용한 큰 이유는 Boot Actuator 기능이 강력해서 사용했다고한다. Actuator는 나도 설정만해서 사용해봤는데 거의 설정없이 프로젝트 상태를 체크하고 json형태로 상태 데이터를 볼 수 있기 때문에 모니터링 시스템을 구현하기 위해서 굉장히 이점을 주는 기능이다. 인상 깊었던 것은 PMon 개발팀이 발표자분을 포함해 세분이라고 했는데 한분이 PM, 프론트 개발자 한분 그리고 백앤드 개발자 발표자분 이렇게 총 세분이다. 시간과 인력이 부족한 상황에서 DevOps를 해야했고 Boot를 사용하므로써 시간과 인력을 줄일 수 있었다. 

그리고 발표자분께서 Boot를 이용해서 모니터링 관리에 편하게 만들어놓은 template프로젝트를 공개했다.

여튼 재밌는 프로젝트를 하는 것 같아보인다.





Spring Integration을 통해 살펴본 메시징 세계 (skp, 이완근)

  Integration 프로젝트를 어디에 사용가능한지 항상 궁금해 하면서 구현은 해보지 못했는데 세션을 들으며 어느정도 도움이 됐다.

사용하는 이유는 말그대로 통합이다. 예를들어 여러 서비스가 각자 다른 통신 프로토콜을 사용한다면 그 여러 서비스를 사용하는 client입장에서는 개발하기 번거롭고 서비스 특성마다 개발을 해야한다. 그래서 Spring Integration을 통해 중간 Gateway를 만들어서 여러 서비스를 하나의 통신 프로토콜로 통신 가능하게 통합할 수 있게 도와주는 프로젝트다.

들으면서 굉장히 흥미로운 프로젝트라고 생각했다. 요즘 API Gateway가 핫한 기술인데 이 기술을 사용해서 개발 할 수 있겠다?라는 생각을 해봤다. 발표 중간에 간단한 라이브 코딩으로 예제를 보여주셨다. 그리고 통합하는 과정과 주의해야 할 사항. 그리고 마지막에 무조건 Integration을 도입하는 것보다는 사용해야하는 정확한 이유가 있을때 도입해보라고 하셨다. Integration뿐만 아니라 모든 기술이 그렇다. 





마무리

  3번째 컨퍼런스인데 해가 지날 수록 이해하는 깊이가 다르다. 좋은 컨퍼런스를 매년 열어주시는 것에 감사하다. 그리고 재밌다. 항상 모든 세미나나 컨퍼런스에 참가할 때 아쉬운게 자리가 부족한 경우가 생기는데 이 점은 조금 아쉽다. 그리고 자주 만날 수 없는 많은 개발자 분들을 보고 서로 소식도 알려주고 이야기하는 시간도 있어서 좋았다. 그리고 반가웠다. 참가비가 작년은 만원?으로 기억되는데 올해는 2만원이였다. 개인적인 생각으로는 더 많은 돈을 받아도 된다고 생각한다. 아무튼 올해도 아주 재밌는 날이였다. 내년에는 나도 발표를??ㅋㅋ







Comments