0%

Spring Camp 2019 Review

스프링캠프 2019 참석 후기

실전에 써먹는 스프링부트

  • 개발자의 삶은.. B(Build), C(Code), D(Deploy)
  • Build: Springboot Gradle Plugin, 의존성관리(BOM)
  • Code: 스프링(애노테이션) 프로그래밍 모델, @Profile, AutoConfiguration, Application.yml
  • Deploy: 전통적 배포방식, 자기완비적 실행가능한 배포방식
  • spring-boot-admin

Monitoring With Actuator

  • 모니터링을 하는이유? 장애예방, 성능개성 등.. 을 하려면 지표가 필요하다.
  • 모니터링을 어떻게 할것인가? Spring Boot Actuator
  • 애플리케이션 제어도구 제공 : endpoint
  • Metric Endpoint > http.server.requests : RED(Rate, Errors, Duration) Method 부합 정보제공
  • Micrometer : metric collector 추상화된 인터페이스

자바에서 null을 안전하게 사용하는 방법

  • null의 탄생은 실수이고, 현재 구글플레이 통계상 자바진형에서 많은 결함은 NPE관련이다.
  • API(매개변수, 반환값)에 null을 최대한 쓰지말자.
  • 사전조건과 사후조건을 확인하라: design by contract(계약에 의한 설계: OCP)
  • (상태와 같이) null의 범위를 지역(클래스, 메서드)에 제한하라.
  • 초기화를 명확히 하라.
  • JSR 305, JSR 308
  • Checker Framework

무엇을 어떻게 테스트 할 것인가?

  • 테스트로 얻을 수 있는것? 안정감과 자신감
  • 대상은? 현재와 미래의 나, 현재와 미래의 동료
  • 구현 테스트가 아니라 설계 테스트를 해야한다.
  • 테스트하기 쉬운 코드로 개발하기
  • Non-Testable(제어할 수 없는 영역)을 BoundaryLayer까지 빼내어 테스트한다.
  • @SpringBootTest: SpringContext는 꼭 필요할때만 사용하자. 피드백이 느린단점이 있다.
  • Test Double을 남용하지 말자. 무분별하게 사용하면 구현테스트가 될 수 있기 때문에..

레거시 프로젝트 개선 이야기

  • 레거시코드? 테스트코드로 커버되지 않으며 유지보수가 되지 않는 코드.
  • 레거시코드? 오랜시간 자신의 역할을 실행한 안정적인코드, 조직의 축적된 기술이 녹이 있는 코드.
  • 핵심은.. 코드를 개선하고 내 것으로 만들어야 한다.
  • 비난은 그만하고 로직파악을, 로직파악은 TC를 보면 좋은데 없을경우 만들어야한다.
  • 운영중이기 때문에 당장 해결해야할 우선순위를 정한다.
  • Common Lib에서 실제로 쓰는것만 빼서 추가하고, 왠만하면 스프링에서 제공하는걸로 교체.
  • 배포는 카나리 릴리즈
  • 전에는 잘됐는데 지금은 안되요.. 라는 말도 들을 수 있다.
  • CPU 사용량이 많은곳 메모리 절약 등도 고려
  • 비용이 드는 외부 API 교체

Review

  • 오전 세션(1,2)을 듣고 많은 분들이 Actuator가 Production Level에서 성능문제를 일으키지 않을지에 대해 궁금했던거 같은데, 이에 대해 만족할만한 답변을 들은 것 같진 않다. 그래도 일단 써봐야겠다는 생각은 들었다.
  • 세션 3은 null 사용에 대해 한번 더 생각하게 된 것 같다. null문제에 대해 당장은 해결이 되지 않을 것 같으니, 잘 이해하고 사용해야 할 것 같다.
  • 세션 4에서는 테스트코드를 왜 짜는지, 어떻게 짜야할지에 대해서도 한번 더 생각해보게 되었다. 개인적으로 스프링 컨텍스트 로딩과 Test Double을 너무 남용하고 있었지 않았나 싶다.
  • 세션 5는 많은 깨우침과 반성의 시간이었다. 레거시코드에 대한 마음가짐이 바뀌어야하고, 레거시코드를 내 코드로 만들어야하는 노력이 필요할 것 같다.
  • 세션 6,7은 코틀린 관련 세션을 들었는데, 아직까진 practical한 단계는 아닌것 같다는 생각이 들었다.