본문 바로가기
기록/IT

독서

by 무심한고라니 2024. 11. 5.

2024년 하반기에 읽은(훑은? 읽어가는?) IT 도서 목록이다.

 

  1. 스프링 배치 완벽 가이드 2/e
    • 프리 처음할 때 동료분이 쿼츠로 배치 작업(스프링 배치인지는..)을 하는 것을 본 적이 있다. 이후 다른 곳에서 배치 작업을 다룰 일이 있었는데, 선택지가 두 개였다. Spring JDBC를 통한 배치 처리 혹은 Spring Batch를 사용할 것인지. 해당 프로젝트는 이미 Spring JDBC를 통해 배치 작업을 하는 코드가 있었고, Spring Batch는 다른 프로젝트의 소스를 보고 직접 처음부터 작성해야 하는 상황이어서 Spring JDBC를 통한 배치 처리를 했었다. 이때 일은 잘 마무리 되었지만, Spring Batch를 통한 소스 분석이 완벽하지 않은 상태에서 작업 방향을 선택했던 기억이 나서 스프링 배치에 대한 공부할 겸 읽어보았다.
    • 우선 이 책은 3년 전 책이고, 스프링 배치 4(스프링 프레임워크 5 혹은 스프링 부트 2) 버전을 기반으로 작성되었다. 나는 스프링 부트 3(스프링 프레임워크 6) 버전, 즉 스프링 배치 5로 테스트해보았기에 책과는 안 맞는 부분이 있었다. 예를 들어 스프링 부트 2(스프링 배치 4) 기준으로는 최초 부트 기동 시 @EnableBatchProcessing이 있어야 빈으로 등록된 배치 잡을 실행하는데, 스프링 부트 3 기준으로는 @EnableBatchProcessing이 없어야 빈으로 등록된 배치 잡을 실행시켰다. @EnableBatchProcessing을 사용하면 배치 자동 구성이 적용되지 않는데, 자동 실행을 원치 않고 스케쥴러나 Launcher 등으로 실행을 원하면 붙여야 했다. 
    • 현재 배치의 두 모델인 Tasklet, Chunk 각각 간단한 실습을 해본 상태인데, 스케쥴러 등과 연계해서 실제로 어떻게 적용되는지 파악할 필요가 있다.
  2. 스프링 시큐리티 인 액션(보안 기초부터 OAuth2까지)
    • 웹에이전시에서 일할 때는 스프링 시큐리티가 아닌 스프링 MVC에 인터셉터로 인증/인가 처리를 했었던 걸로 기억이 나고(DB로 권한 관리하고, 엔드 포인트 제한 처리), 이후 SI/SM으로 일할 때는 시큐리티 의존성이 추가되어 있더라도 공통 기능을 건드릴 일이 없었다. 그렇다보니 프로젝트 큰 구조가 잘 그려지지 않아 도서를 구입했다(예전에 구입했으나 이제서야..).
    • 이 책은 약 2년 전 책이고, 아마 스프링 시큐리티 5.7 버전 미만을 사용하고 있는 것 같다(시큐리티 설정 파일 작성 시 현재 deprecated된 WebSecurityConfigurerAdapter 클래스를 상속받아 작성하는 걸로 보아)[1]. 하지만 버전 6(스프링 부트 3) 기준으로 상속 후 configure 메소드 오버라이딩하는 방식이 아닌 커스텀 설정들을 Bean으로 등록하여 사용한다.
    • 현재 책의 OAuth2 부분을 읽고 있는데 먼저 MVC 구조에 JWT 인증 구현해보고, 이후 OAuth2도 구현해보면 좋을 것 같다[2].
  3. 육각형 개발자
    • 자바를 처음 공부할 때 JSP, 스프링 관련 책의 저자분으로 알고 있었다. 그런데 이후 유투브 등으로 접하게 되면서 배울 점이 많은 분이라는 생각을 하게 되었고, 서점에서 테스트 주도 개발 시작하기와 이 책을 구매하였다. 개발 기술에 관련한 책은 아니지만, 그렇다고 일하는 데 동떨어진 책은 아니라 똑똑하게 일하는 방법을 알려주는 책 같아서 구매했다(적어도 나 스스로 어떤 기준을 잡고 일하는 데 좋을 거 같아서).
    • ..
  4. 자바 ORM 표준 JPA 프로그래밍
    • 거진 5년 전쯤 자바 백엔드 개발자들이 MyBatis가 아닌 JPA 사용한다고 들어서 배워야지, 하다가 지금에서야 공부해본다. 업무에서는 사용할 일이 없어서 강의로 기본 개념을 공부하고, 머리 속으로 생각한 예제를 쳐보면서 이해하는 식으로 진행한다[3]. 딥한 부분까지 실습하긴 힘들 것 같고, 다양한 연관관계 매핑을 연습해보는 정도일 것 같다.
    • 가장 기본적인 상황을 가정해서 실습해보고자 했다. 직원 조회 시 그의 부서, 권한 등이 함께 조회되어야 한다. 테이블로 따지면 User, Dept는 일대일 관계이고 User, Role은 다대다 관계라고 할 수 있다. DB로부터 User 정보를 호출하면 자동으로 연관관계가 있는 Role, Dept 정보도 조회해올 수 있도록 연습해보았다[4][5].
    • 책에서는 영속성 컨텍스트와 같은 개념들을 이해시키기 위해 persist, remove, merge와 같은 메소드 등을 직접 호출해서 사용했으나 실습 시에서는 Spring Data JPA를 사용했기에 JPA의 저수준 API를 직접 사용하지 않았다[6].
  5. Kafka
    • .

 

 

-----

1. 스프링 시큐리티 변경점

2. OAuth2는 아니지만 관련 연습해보려고 했던 거, 추후 더 공부해보려고 남긴다.

3. JPA를 연습하려고 만든 저장소이고, 앞으로 공부하면서 추가해나갈 예정이다. 강의는 인프런에 우아한 형제들 출신의 김영한 선생님걸 들었다.

4. 운영 환경에서 테이블 생성은 따로 진행되기 때문에 부트 실행 시 DDL은 자동으로 실행되고, 이후 API를 통해 CRUD, 즉 DDL문을 테스트할 수 있도록 했다.

5. RDB 모델링에서 다대다 관계(ex. 학생과 과목)는 데이터 중복 등의 문제 때문에 연관 테이블을 추가하여 다대일 관계 두 개로 분리해서 설계한다. 실습해볼 User와 Role과 같은 경우 역시 다대다(M:N) 관계를 UserRole 엔티티를 추가하여 다대일 관계 2개로 푸는 게 좋다고 한다. 우선 연관 엔티티인 UserRole을 추가하여 연동해보고, 이후 연관 엔티티 없이 연동해봄으로써 그 차이를 이해해보고자 한다(아직).

6. 해당 프레임워크에서는 JpaRepository나 CrudRepository의 인터페이스가 구현되어 있기에 저수준 메서드를 호출할 필요가 없다고 한다. 이 인터페이스에서 save, delete, findById, findAll 등 메소드를 제공하며 save 메소드의 동작을 예로 들면 JpaRepository 인터페이스에서 제공하며 엔티티가 새로운 경우 persist를 호출하고, 기존 엔티티라면 merge를 호출하는 방식으로 동작한다. 또한 직접 EntityManager를 다루지 않아도 되는데 이는 메소드가 호출될 때 자동으로 트랜잭션을 시작하고 커밋하기 때문이다.

'기록 > IT' 카테고리의 다른 글

몇 가지 기억..  (2) 2024.11.15
점핏 프론트 개발자 세미나  (0) 2023.04.30
NEXTSTEP] TDD, Clean Code with Java  (0) 2022.05.09
부러진 개발자 이야기  (0) 2021.12.24
파이썬 교육 수료  (0) 2021.12.19

댓글