Project 해축갤(27)
-
Java @Scheduled: 매시 정각에 실행되는 Cron 표현식 테스트하기
배경 @Transactional @Scheduled(cron = "0 0 * * * *") public void updatePopularPosts() { // 새로운 상위 10개 게시물 추출 List top10Posts = postRepository.findTop10Posts(); // 기존의 data 삭제 popularPostRepository.deleteAllInBatch(); // 변환 후 새로운 data 삽입 List popularPosts = convertToPopularPost(top10Posts); popularPostRepository.saveAll(popularPosts); } 위 함수에 대한 테스트 코드를 작성해보려 하다 이런 글을 쓰게 되었습니다. 테스트의 목적은 매 정시에 함수가 실..
2023.12.20 -
테스트 띠띠ㅣ디ㅣ디ㅣ딛ㄹ딸깍? postman 으로 '띡띡딸깍' 하기
현재 다음과 같은 작업을 진행 중에 있습니다. 💡 데이터베이스에 1억 건이 있을 때 나의 가련한 API의 성능(반응시간)은 어느 정도 나올까? 현재 조회 쿼리는 인덱스도 뭐도 없고 단순한 형태의 CRUD 의 조회용 쿼리이기 때문에 1억 건에서 데이터를 뽑는 데는 실제로 오래 걸릴 것입니다. // 실제 사용하는 오늘의 코드 @Override public List findAllDTOs(Integer offset, Integer limit) { return queryFactory .select(new QPostDbDTO( post.id, post.title, post.content, post.member.name, post.isDeleted, post.reg_date )) .from(post) .orderBy..
2023.11.30 -
CD(Continuous Deployment) 기본 개념, CD 도구 선택의 이유
지금까지의 이야기 2023.11.17 - [해축갤 프로젝트/CI CD] - 원큐에 끝내는 GitHub Actions 를 이용한 CI 구축 : 기본 실습 가이드 원큐에 끝내는 GitHub Actions 를 이용한 CI 구축 : 기본 실습 가이드 안녕하세요! 지난 번에는 CI(Continuous Integration) 프로세스와 도구 선택에 대해 알아보았습니다. 2023.11.14 - [해축갤 프로젝트/CI CD] - CI(Continous Integration) 도구 선택 고민 원큐에 끝내기 CI(Continous Integr xpmxf4.tistory.com 저번까지는 CI(Continuous Integration) 를 도입한 과정을 공유했습니다. 테스트 코드를 작성후 GitHub Actions를 활용..
2023.11.20 -
아ㅏㅏㅏ 지속적 제공 vs 지속적 배포 의 차이가 뭔데
혼란의 시작 : 지속적 제공(Continuous Delivery)과 지속적 배포(Continuous Deployment) 구분이 안된다 https://www.redhat.com/ko/topics/devops/what-is-ci-cd?cicd=32h281b CI/CD(CI CD, 지속적 통합/지속적 배포): 개념, 툴, 구축, 차이 CI/CD는 애플리케이션의 통합 및 테스트 단계부터 제공 및 배포까지 애플리케이션 라이프사이클 전체에서 지속적인 자동화와 지속적인 모니터링을 제공하는 것을 뜻합니다. www.redhat.com RedHat의 글을 읽다가 혼란이 왔습니다. 지속적인 제공이란 개발자들이 애플리케이션에 적용한 변경 사항이 버그 테스트를 거쳐 리포지토리(예: GitHub 또는 컨테이너 레지스트리)에 자..
2023.11.20 -
PasswordEncoder 클래스 개선 : e.printStackTrace 는 실제 서비스에서 별로
개요 public class PasswordEncoder { public static String encode(String password) { String result = ""; try { MessageDigest digest = MessageDigest.getInstance("SHA-256"); byte[] encodedHash = digest.digest(password.getBytes(StandardCharsets.UTF_8)); result = Base64.getEncoder().encodeToString(encodedHash); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); // 여기가 문제! } return result; } } P..
2023.11.20 -
원큐에 끝내는 GitHub Actions 를 이용한 CI 구축 : 기본 실습 가이드
안녕하세요! 지난 번에는 CI(Continuous Integration) 프로세스와 도구 선택에 대해 알아보았습니다. 2023.11.14 - [해축갤 프로젝트/CI CD] - CI(Continous Integration) 도구 선택 고민 원큐에 끝내기 CI(Continous Integration) 도구 선택 고민 원큐에 끝내기 2023.11.14 - [해축갤 프로젝트/CI CD] - CI(Continuous Integration) 개념, 개인 CI vs 팀 CI CI(Continuous Integration) 개념, 개인 CI vs 팀 CI 2023.10.31 - [해축갤 프로젝트/테스트 코드] - postman 띡띡딸깍 귀찮아서 테스트 xpmxf4.tistory.com 1. 저장소 설정 2. 빌드 스크..
2023.11.17 -
CI(Continous Integration) 도구 선택 고민 원큐에 끝내기
2023.11.14 - [해축갤 프로젝트/CI CD] - CI(Continuous Integration) 개념, 개인 CI vs 팀 CI CI(Continuous Integration) 개념, 개인 CI vs 팀 CI 2023.10.31 - [해축갤 프로젝트/테스트 코드] - postman 띡띡딸깍 귀찮아서 테스트 코드 짭니다 postman 띡띡딸깍 귀찮아서 테스트 코드 짭니다 매번 기능 만늘때마다 postman 띡 띡 딸깍 하며 기능 테스트 xpmxf4.tistory.com 만약 CI에 대해서 잘 모르신다면 아~주 깔끔히 지난 글을 보고 오시면 좋습니다! 그리고 정말 너무너무 급하시면 아래 결론을 먼저 보시고 글을 읽으셔도 됩니다!! 그처 하트 하나만,,,! 저번 글에서 CI에 대한 기본 개념과 이를 ..
2023.11.14 -
CI(Continuous Integration) 개념, 개인 CI vs 팀 CI
2023.10.31 - [해축갤 프로젝트/테스트 코드] - postman 띡띡딸깍 귀찮아서 테스트 코드 짭니다 postman 띡띡딸깍 귀찮아서 테스트 코드 짭니다 매번 기능 만늘때마다 postman 띡 띡 딸깍 하며 기능 테스트 하는 게 너무나 귀찮습니다. '귀차니즘'이 많은 개발자냐고요? 네! 그거 잘못된 거 아니냐고요? 는 장난입니다만, 사실 진짜 알빠노이긴 xpmxf4.tistory.com 이제 테스트 코드도 다 작성했겠다, CI 를 본격적으로 구축해 보기로 했다. 근데 사실 뭐 자동 테스트 빌드 등등의 키워드로만 알고 제대로는 알지 못해 어디 가서 아는 척좀 하려고 찾아봤다! CI 란 지속적 통합은 자동화된 빌드 및 테스트가 수행된 후 개발자가 코드 변경 사항을 중앙 리포지토리에 정기적으로 병합하..
2023.11.14 -
Hibernate의 "Detached Entity Passed to Persist" 오류 이해와 해결
오류 이해하기 Detached(준영속) 상태란? Hibernate 및 JPA에서 엔티티의 생명주기 중 하나인 'Detached' 상태는 영속석 컨텍스트가 더 이상 해당 객체를 추적하지 않을 때 발생합니다. 세션이 닫히거나(close), 클리어될 때(clear), 또는 수동으로 영속성 컨텍스트에서 제거(detach) 될 때 이 상태에 도달할 수 있습니다. Entity의 상태 코드 EntityState enum을 보면 public enum EntityState { PERSISTENT, TRANSIENT, DETACHED, DELETED; static final CoreMessageLogger LOG = CoreLogging.messageLogger( EntityState.class ); /** * Deter..
2023.11.08 -
org.mockito.exceptions.misusing.UnnecessaryStubbingException 해결
// PostService의 게시글 수정(updatePost) 정상 케이스 테스트 코드 @Test public void updatePost_ShouldChangePostDetails_WhenUpdateInfoIsValid() throws Exception { // given - 상황 만들기 Long postId = 1L; PostUpdateDTO postUpdateDTO = PostUpdateDTO.builder() .title("Updated Title") .content("Updated Content") .build(); Post existingPost = Post.builder() .id(postId) .title("Title") .content("Content") .build(); when(pos..
2023.11.07