2023.04.22 기술 컨퍼러스에 다녀왔다. 티켓팅 자체는 생각보다 여유로워서 운좋게 붙어서 갈 수 있었다.
자세한 내용을 담기에는 너무 양이 많아서 섹션별로 키워드만 정리해서 나중에 또 내가 정리하고자 한다.
어느 월급쟁이 개발자의 스프링 부트 따라잡기 ver.3
스프링 6의 출시와 함께함께 자바-스프링-스프링 부트의 변화를 함께 살펴봅니다.
이 섹션은 spring boot 3.0과 spring 6.0 에 대한 간략한 소개와 무엇이 변화했는지에 대한 내용을 주로 다뤘다.
- spring boot 3 -> java 17
- 빌드도구, 언어를 고려하면서 해야한다
- spring io blog release, 깃허브
- 뉴스레터
- wiki
- 변경사항 적용
- 토이프로젝트나 실무 프로젝트에 도입해보기
- 스프링부트 3.0
- 2022.11.24에 반영
- java 17
- 그 전까지 변한 점
- Local variable Type interface
- switch expression -> ide 에서도 안내
- Text Block
- 문자 길이가 길때는 JSON 으로 바꿔서 하는 것도 좋다
- Record 선언
- Jackson 직렬화 2.12.3에서만 자동지원
- pattern matching instance of
- Sealed Class (잘 안 쓴다)
- Jakarata EE
- Jakarta EE9
- javax -> jakarta
- IntelliJ namespace 변경 대응
- 2.7로 업그레이드 할 때 시도해보자
- spring 6.0
- Java 17
- Jakarata EE 10
- AOT를 통한 실행속도 향상
- HTTP interface client
- Spring Webflux
- Observability
- micrometer observation
- gradle, maven 플러그인
- native image -> .....?
- Jakarata Persistence 3.1.0 (Data Access And Transaction)
- UUID 대신 TSID -> 시간순 정렬
- Hibernate ORM 6.1
- HTTP interface -> webflux 필수
- Jackson 2.14.1
- Jakarta Servlet 6.0
- 후행슬래시 허용 X
- Micro observation
- AOT -> JVM, Gradle VM
- 자바를 17로 올린 다음에 스프링 부트 버전을 올리자
- ConstructorBuilder
- Actuator
- Spring Boot 3.0 최소 기준 알아보기
- Gradle 7.3
- Java17
- Kotlin 6
- Java 에서 Kotlin으로 옮겨갈 필요는 없다
- 컴파일 속도가 느려질 수 있다
- 스프링이 사용하는 유의적 버전(Sematic Version)
- Major
- 엄청 귀칞다
- Minor
- 뭔가 귀찮다
- Patch
- 일단 하고보자
- Major
- spring 2.7
- 최소한의 버전
- spring 2.6은 EOL
- RestTemplate , WebClient, HttpInterface
- 기본 업데이트 전략
- Spring Boot Dependencies
- minor 기준 최신 패치버전으로 변경
- minor 버전 1 올리고 해당 minor 버전 최신 패치버전으로 변경
글로벌 서비스를 위한 Timezone/DST
타임존(Timezone)과 DST(Daylight Saving Time) 개념을 간략히 살펴보고,
글로벌 서비스에서 발생할 수 있는 Timezone/DST 관련 이슈와 주의할 점들에 대한 경험을 공유합니다.
- TimeZone
- GMT
- UTC
- offset
- Date
- 간단한 날짜와 시간 조작
- mutable 로 스레든 안정성이 없다
- 간단한 날짜와 시간 조작
- Calendar
- Joda-Time
- java.time 패키지
- ZoneDateTime | OffsetDateTime > LocalDateTime
- ZoneRulesProvider
- TransactionRule
- useDailyTime, inDaylightTime
- getOffset
대규모 엔터프라이즈 시스템 개선 경험기 1부 ~ 2부
오래되고 낡은 엔터프라이즈 시스템을 서비스와 요구사항 지원 중단 없이 단계적이고 점진적으로 개선, 전환하고 있는 경험을 공유하고자 합니다.
1부에서는 데이터베이스 중심의 전통적인 백엔드 시스템 구조를 점진적으로 개선하는 과정과 전략들을 시니어 관점에서 소개합니다.
오래되고 낡은 엔터프라이즈 시스템을 서비스와 요구사항 지원 중단 없이 단계적이고 점진적으로 개선, 전환하고 있는 경험을 공유하고자 합니다.
2부에서는 오래되고 낡은 엔터프라이즈 애플리케이션을 어떻게 지속 가능한 어플리케이션으로 전환하는지에 대해 중니어(?)의 관점에서 소개합니다.
실무에서 적용하는 테스트 코드 작성 방법과 노하우
본 발표에서는 계층 구분을 통해 효율적인 테스트 코드 작성 방법을 설명합니다.
특히, 어떤 계층에서 어떤 관점으로 테스트 코드를 작성해야 하는지에 대한 자세한 가이드라인을 제시하며,
테스트 코드 작성 시 어려운 부분과 이를 해결하는 방법에 대해서도 다룹니다.
구현부터 테스트까지 - 대용량 트래픽 처리 시스템
Application level cache 구성은 성능 향상을 위해서 반드시 필요합니다.
여러 가지 Cache 방안이 있겠습니다만, Local 메모리에 저장하고 사용하는 것이 당연히 가장 빠릅니다.
하지만 컨테이너화된 애플리케이션 환경에서는 몇 가지 문제가 있습니다.
그중 가장 큰 문제인 수평 확장을 할 때 동기화 문제를 간단하게 해결해 대용량 트래픽을 쉽게 처리하고, 테스트를 할 수 있는 방법을 소개하는 시간을 가져볼까 합니다.
느낀점
디자인 패턴이 정말 중요하다는 걸 많이 느꼈다. 이론적으로는 알고 있었는데 늘 대규모 시스템에서는 어떻게 적용되고 있을지 궁금했었는데 그부분에 대한 답이 많이 된 좋은 경험이었다.
그래서 최근에 기획 중인 프로젝트에도 제대로 이용하고 싶어서 아키텍쳐 설계와 관련된 책을 많이 사버렸다