분류 전체보기(109)
-
결제 취소 기능명세서 수정 : 서비스 분리의 중요성
오늘은 '결제 취소 기능'의 개발 과정에 대한 글을 쓰러 왔습니다. 초기 설계의 오류 : 결제 서비스의 역할 혼동 초기에 결제 취소 기능을 설계할 때, 사용자가 직접 결제를 취소할 수 있는 시나리오를 고려했습니다. 기존의 모놀리식 방식에서는 이러한 방식이 틀리지 않다고 할 수 있습니다. 왜냐하면 모든 서비스에 대한 코드가 다 하나의 시스템 안에 같이 있기 때문이죠. 그러나 이는 결제 서비스의 본질적인 역할에 대한 오해에서 비롯된 것이었습니다. 결제 서비스는 말 그대로 '결제'라는 행위를 관리하는 것이지, 사용자가 직접 취소를 요청하는 것은 아닙니다. 수정된 프로세스 팀원들과의 논의를 통해 실제 배달의 민족에서 결제 취소를 하기 위해서는 고객센터가 이를 수작업으로 고객한테서 취소 요청을 받고 전달하거나, ..
2023.11.20 -
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 -
MSA 에서 알람 메세지 Firebase Cloud Messaging(FCM) 처리하기
https://organic-hunter-0ab.notion.site/FCM-60b5f7ebbb1f486a8b139ebe4ea5a09c?pvs=4 이 글은 위 팀 노션에서 서로 공유하기 위한 글이지만, 다른 사람들에게도 공유되면 좋겠어서 옮긴 글입니다 :) 배경 Firebase Cloud Messaging(이하 FCM) 관련해서 user-service는 알람 이벤트를 어떻게 핸들링할지 의뢰가 들어왔습니다. 이 부분에 대해서 협의가 충분히 고려해야 되는 이유는 사용자에게 실제로 가는 알람까지 여러 마이크로서비스의 협업이 동반되기 때문입니다. 간략히 FCM 의 과정을 설명하자면 사용자가 애플리케이션에 로그인할 때 생성되는 FCM 토큰을 활용하여 사용자가 주문 상태 변경과 같은 중요한 이벤트를 실시간으로 받아..
2023.11.08 -
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