나는 큰 부와 큰 성공의 쟁취, 그리고 원하는 것을 하고자 하는 욕망이 있다. 그곳으로 도달하기 위해 여러 험난한 단계(= 목표)를 거쳐야 한다고 생각한다. 재작년 지금쯤, 웹 공부를 시작하면서 세운 목표가 첫 단계였다. 그리고 그 목표를 올해 초에 이루면서 큰 성취를 느꼈다.(관련 링크)

 

입사한 후에는 투자 공부와 개발 공부를 2 ~ 3년간 지속하며, 두마리 토끼를 잡자고 다짐했다. 하지만 투자 공부가 꽤나 재밌기도 했고, 회사일도 많기도 해서 개발 공부를 소홀히 했던 것 같다. 비록 투자와 개발을 병행하기 어렵다는 점을 느꼈지만, 그래도 소기의 성과는 있다. 그동안 투자에 대한 통찰력을 얻을 수 있었고, 이를 기반으로 한 투자 전략도 세울 수 있었다.

 

이제는 개발에 집중하려 한다. 그 편이 리턴값이 더 크다고 생각한다. 그리고 팀 내에서, 회사 내에서 제일 잘하는 사람이 되고자 하는 욕망도 생겼다. 그러므로 나의 두 번째 목표는 2024년 12월 31일까지 최고가 되는 것이다. 이에 대한 구체적인 내용은 다음 글에서 작성하겠다.

'블로그' 카테고리의 다른 글

첫 회사 프로젝트에서 느낀 점  (0) 2023.08.15
개발자의 학습 방법 고민하기  (0) 2023.08.09
신입의 백엔드 로드맵  (0) 2023.05.14

배경

다음의 절차대로 vault token을 변경을 하니 Pod fail 에러가 지속적으로 발생하는 현상이 발생하였다.

  1. vault token 교체 후 빌드
  2. 생성된 이미지를 바탕으로 deploy 실행
  3. 기존 토큰 삭제
  4. 완료시점부터 배치잡 모두 token 403 에러로 실패.(pod fail)

 

원인

prod 환경은 일반적으로 배포할 때마다 버전(태그)이 변경되므로 이미지 pull 정책이 IfNotPresent로 세팅되어있다. 하지만 위의 절차에서는 단순히 토큰만 바꿔서 빌드를 진행했을 뿐, 새로운 버전으로 빌드를 한 것이 아니었다. 

따라서 pod들은 기존의 토큰을 계속 바라보고 있었기 때문에 해당 에러가 발생하게 되었다.

in spring boot 2.X.X

@NoRepositoryBean
public interface JpaRepository<T, ID> extends PagingAndSortingRepository<T, ID>, QueryByExampleExecutor<T> {
	
	@Override
	List<T> findAll();
	...
}
  • 2버전 JpaRepository는 PagingAndSortingRepository, QueryByExampleExecutor을 상속한다.

in spring boot 3.X.X

@NoRepositoryBean
public interface JpaRepository<T, ID> extends ListCrudRepository<T, ID>, ListPagingAndSortingRepository<T, ID>, QueryByExampleExecutor<T> {
	...
}
@NoRepositoryBean
public interface ListCrudRepository<T, ID> extends CrudRepository<T, ID> {

	<S extends T> List<S> saveAll(Iterable<S> entities);

	List<T> findAll();

	List<T> findAllById(Iterable<ID> ids);
}
@NoRepositoryBean
public interface ListPagingAndSortingRepository<T, ID> extends PagingAndSortingRepository<T, ID> {

	List<T> findAll(Sort sort);
}
  • 3버전 JpaRepository는 ListCrudRepository, ListPagingAndSortingRepository, QueryByExampleExecutor을 상속한다.

why ListXXXRepository?

일반적인 조회, 수정, 삭제 기능은 CrudRepository로도 충분하지만, CrudRepository#findAll()은 Iteratable을 반환하기 때문에, 결과물을 List로 받고싶은 경우에는 번거롭다.

  • JpaRepository는 List로 받을 수 있다.
  • 페이징이나 정렬 등의 추가 기능이 필요하다면 JpaRepository를 사용하면 된다.

 

Spring 3.X.X부터는 List로 데이터를 받을 수 있도록 ListCrudRepository 인터페이스를 지원한다!

 

참고자료

+ Recent posts