개발일기/Spring7 API versioning 방법론 세상에 완벽한 소프트웨어는 존재하지 않는다.애플리케이션은 요구 사항이 변경될 때마다 새로운 버전을 릴리즈합니다. 이때, 다양한 버전을 동시에 사용하는 유저들의 안정적인 활동을 보장하기 위해서 backend engineer는 하나의 API에서 다양한 버전을 관리해야 할 때가 있습니다. 이번에는 Spring과 Kotlin 환경을 기준으로 API version을 관리하는 몇 가지 방법론을 제시해보겠습니다.들어가기 앞서 대부분의 문제가 그렇듯, 정답이란 없습니다. 본인의 팀 상황에 맞는 방법을 선택하시되 중요한 것은 팀 전체가 하나처럼 움직이는, 모든 코드가 공통성을 가지는 “일관성”이지 않을까 싶습니다.API 버전 관리 전략1. URL Versioning가장 대중적으로 알려진 방식이다. 접근 방법도 단순하다... 개발일기/Spring 2024. 11. 20. Spring security Architecture 애플리케이션 개발자가 모든 보안 및 인증 관련 사항을 하나하나 구현하고 신경을 쓰기엔 현실적으로 시간과 자원이 많이 든다. 이에 스프링은 하위 라이브러리로 스프링 기반 애플리케이션의 보안(인증, 권한, 인가)을 담당하는 Spring security를 개발하여 애플리케이션 개발자들에게 편의를 제공한다.다만, 보안에 관련된 개발 특성상 코드 변화가 잦고 버전마다 차이가 있을 수 있으므로 레퍼런스는 공식 docs에서 얻는것이 가장 확실한 방법이다.아래 블로그 본문은 Spring Security의 6.3.4 버전 공식 docs를 필자의 생각과 함께 재구성하였다.Spring Security “사용”하기Security를 “사용”만 하는 방법은 정말 간단하다.@EnableWebSecurity@Configuration.. 개발일기/Spring 2024. 11. 12. [Spring batch] meta data table을 public이 아닌 다른 schema에 생성 실행환경Spring batch는 버전마다 편차가 심하다. 본 포스팅의 실행 환경을 반드시 확인하자.Spring boot: 3.3.5Spring batch: 5.1.2RDBMS: postgreSQLSpring batch meta data table 수동 설정스프링 배치는 그 실행과 관리를 위해 Job, Step, JobParameter 등의 정보를 주로 데이터베이스에 저장하고 관리한다. Spring batch는 DB에 저장된 batch관련 정보들을 활용하여 작업 재실행, 중단 후 재시작, 상태 추적 등의 기능을 효과적으로 지원하게 된다.Spring batch는 데이터의 스키마를 RDBMS의 종류에 맞게 정의해두었고 application.yml에서 설정을 통해 이 schema를 생성하는 sql 스크립트를 자.. 개발일기/Spring 2024. 11. 7. Spring batch 5.0 Migration Guide - 국문 번역 본문은 Spring-project의 spring-batch에서 소개하는 Spring Batch 5.0 Migration Guide를 국문 번역 해놓은 글이다. v4와 v5가 정말 많이 바뀌었다. v5로 migration 하는 개발자들에게 조금이나마 도움이 되기를 바라는 마음으로 국문으로 옮겨본다.최대한 github Wiki 작성자의 의도를 옮기기 위해서 형식도 그대로 가져왔다. 혹여나 해소되지 않은 의문이 있다면 영어 본문(아래 링크)을 참고하자.https://github.com/spring-projects/spring-batch/wiki/Spring-Batch-5.0-Migration-Guide본 문서는 Spring Batch 5.0으로 애플리케이션을 마이그레이션하는 개발자를 돕기 위해 작성되었다.Ma.. 개발일기/Spring 2024. 10. 31. Spring Boot에서 JNI 사용하기(linux 환경) Java와 Spring은 거대한 커뮤니티를 바탕으로 다양한 라이브러리와 프레임워크를 지원하는 하나의 생태계를 구축하고 있다. 정말 오랫동안 꾸준히 사랑받아온 프로그래밍 언어와 프레임워크로 다양한 장점이 존재한다. 대표적으로 “Write Once, Run Anywhere”라는 원칙으로 플랫폼 독립성을 지향하며 가비지 컬렉션이라는 엄격한 메모리 관리 기능으로 메모리 릭 문제를 줄일 수 있다. 뿐만 아니라 OOP에 특화된 언어 특성상 코드 재사용성과 유지보수성이 향상되어 대규모 애플리케이션 개발에 적합하다는 평가를 받고 있다.하지만,,,, 지금까지 Java와 Spring과 함께라면 무엇이든 할 수 있는 강력한 조합이라고 생각했지만 의외로 간단하게 난관에 부딪혔다. “Java는 시스템을 직접 제어하지 못한다.”.. 개발일기/Spring 2024. 10. 14. “Spring Event”, 세부적으로 조작해보자. 바로 직전 포스팅의 일부분을 복습해보자.Spring Event를 활용하게 되면 SRP, OCP 등 객체 지향 원칙을 준수하며 확장성 있는 서비스를 구축할 수 있다. 이벤트를 손쉽게 추가하거나 수정하여 새로운 기능을 도입하기도 쉽고 코드가 더 명확해진 것을 볼 수 있다. 하지만 Spring Event의 도입이 무조건 장점만 있는 것은 아니다. Spring Event의 여러 특성을 잘 알고 활용해야 한다.멀티 캐스팅 관계Spring Event는 기본적으로 “멀티 캐스팅” 관계이다. 하나의 이벤트 발행자의 반대편에는 다수의 소비자가 존재할 수 있다는 뜻이다. 따라서 동일한 타입의 여러 리스너가 등록되었다면 모든 리스너가 이벤트를 받게 된다.단순히 ‘오.. 훌륭한데?’라고 감탄만 할 문제가 아니다. Spring.. 개발일기/Spring 2024. 9. 25. 결합도를 낮추고 응집도를 높히자. “Spring Event” 객체 지향 프로그래밍의 5가지 설계 원칙을 다시 되새겨보자. 오늘의 주제 Spring Event도 이 5원칙에서 출발한다.1. SRP(Single Responsibility Principle) 단일 책임 원칙2. OCP(Open-Closed Principle) 개방 폐쇄 원칙3. ISP(Interface Segregation Principle) 인터페이스 분리 원칙4. LSP(Liscov Substitution Principle) 리스코프 치환 원칙5. DIP(Dependency Inversion Principle) 의존 역전 원칙흔히 말하는 SOLID 원칙(https://dev-ignuy.tistory.com/14)에 의해 객체지향은 계속 발전해왔다. 이 중에서도 SRP는 “하나의 메서드나 클래스는 한.. 개발일기/Spring 2024. 9. 23. 이전 1 다음