분류 전체보기
-
MSA 환경에서의 트랜잭션 처리 - SAGA 패턴🚀 MSA 2024. 1. 22. 21:56
☁️ MSA 환경에서의 트랜잭션 처리 📍 분산 트랜잭션을 구현하는 방법 2PC (2 Phase Commit) SAGA 패턴 📌 2PC (2 Phase Commit) 2PC는 분산 트랜잭션을 구현하는데 널리 사용되는 패턴으로 Prepare 단계와 Commit 단계로 구성되어 있다. 분산 시스템 환경에서 Cordinator라는 추가적인 인프라 필요 Prepare Phase 관련된 모든 서비스는 Commit을 준비, Transaction Coordinator에 트랜잭션을 시작할 준비가 되었음을 알린다. Commit Phase 트랜잭션을 시작할 준비가 되었다면, Coordinator는 Commit을 요청 - 서비스 중 하나라도 실패한다면, Coordinator는 관련된 모든 서비스에 해당 트랜잭션을 롤백하도록 ..
-
[우아한테크코스 - 프리코스] 4주차 로또 게임 회고 🤑⭐️ 우아한테크코스 2023. 12. 7. 12:24
이번에도 늦은 회고록...작성 😨😨 ⭐ 지난 미션 피드백 1️⃣ 내가 구현하는 방식에서 왜 그 방법을 사용했는지 생각하며 사용하자 다른 분들의 리뷰와 회고록을 보다보니 많은 디자인 패턴을 사용하고 개발을 위한 여러 방법을 사용하는 것을 볼 수 있었다. 사용하게된 이유들을 보면서 내가 놓친 부분에 대해서 많이 생각할 수 있었다. 나 또한 많은 개발 방식을 무턱대고 사용하지 말고 사용할 때의 장점과 단점들을 생각하고 요구 사항을 해결하는데 어떤 것이 더욱 효율적인지를 고려하며 구현해나가는 연습을 할 필요가 있다고 느꼈다. 2️⃣ 요구 사항… 코드를 최종적으로 제출하고 디스코드방을 보니 기능 요구 사항에 대한 내용으로 많은 분들이 의견을 나누고 있었다. 이야기를 슬쩍보니.. 출력을 하는 요구 사항에서 1,00..
-
[우아한테크코스 - 프리코스] 늦은 3주차 로또 게임 회고 😓⭐️ 우아한테크코스 2023. 11. 28. 01:19
🔗 나의 Pull Request Link 뒤늦게 올리는 3주차 회고록… 😓 😎 코드리뷰를 통해 성장해보자 프리코스를 함께 참여하고 있는 동료들에게 2주차 미션에 대한 코드리뷰를 주고 받았다. 코드리뷰 과정에서 내가 다른 코드들을 보며 느낀점과 내 코드에 대한 리뷰를 통해 아쉬운 부분과 배운 부분을 이번 미션에서 적용해보고자 했다. 1️⃣ 코드 컨벤션을 잘 지키자. 이전 미션에서 코드 컨벤션을 제대로 확인을 안한 내 자신의 코드를 발견했다..! if(...) print(...); 작은 컨벤션이라도 지킬 수 있도록 꼼꼼하게 내 코드를 작성하고 검토를 할 때에도 더 신경써야겠다. if(...) { print(...); } 2️⃣ 정적 팩토리 메소드를 사용할 때 더 적절히 활용해보자. public static ..
-
[우아한테크코스-프리코스] 2주차 경주게임 회고를 해보자🏁⭐️ 우아한테크코스 2023. 11. 2. 15:54
🔗 나의 Pull Request Link 😎 1주차와 비교 지난 미션에서 공부했던 내용에 대해서 이번 미션에서도 적용을 해보려고 노력을 많이 했다. 1주차때의 경험을 통해 String의 + 기능에 대해서 어떤 방법이 더 효율적인지 비교해보는데 JMH를 사용해보기도 하고 코드를 작성하는데도 더 수월하게 작성할 수 있었던 것 같다. ⚠️ 지난 미션을 진행할 때 아쉬웠던 부분이 테스트 코드 작성과 git commit message 관련 부분이었다. 이번에 이를 보완하고자 테스트 코드를 작성하는데 시간을 더 많이 사용하고 TDD를 적용해보고자 했다. 처음에는 테스트 코드를 작성하고 이 코드가 정상적으로 동작하도록 실제 코드를 구현하고 이를 리팩토링 하는 식으로 구현을 했다. 하지만, 점점 시간이 지나고 처음 테..
-
👻 Mockito☕️ java 2023. 10. 31. 14:20
우아한테크코스 프리코스의 경주 게임미션을 진행하면서 임의로 생성한 값에 의해 자동차가 전진하거나 정지하는 테스트 코드를 작성하는 도중 임의로 생성되는 값을 미리 테스트 코드내에서 지정해주고 이를 통해 기능을 테스트하고 싶었다. 즉, 어떤 메소드를 실행했을 때 해당 메소드가 어떤 리턴 값을 리턴할 지를 정의해놓고 싶었다. 이런 방법을 사용하기 위해서 Mockito를 이용했다. 🔍 Mockito ❓ Mock 💡 Mock - “모의”, “가짜의” 라는 뜻 - 테스트할 때 필요한 실제 객체와 동일한 모의 객체를 만들어 테스트의 효율성을 높이기 위해 사용 📖 위키에 정의된 Mock 모의 객체(Mock Object)란 주로 객체 지향 프로그래밍으로 개발한 프로그램을 테스트할 경우 테스트를 수행할 모듈과 연결되는 외..
-
🔗 Java 문자열와 구분자☕️ java 2023. 10. 30. 15:56
우아한테크코스의 프리코스 자동차 경주 게임 미션에 아래와 같은 요구사항이 있었다. 자동차 경주 게임을 완료한 후 누가 우승했는지를 알려준다. 우승자는 한 명 이상일 수 있다. 우승자가 여러 명일 경우 쉼표(,)를 이용하여 구분한다. 이렇게 문자열을 연결해야하는 요구사항에 대해 해결하고자 여러 방법을 찾아보았다. 🧩 StringBuilder ⚠️ String + 연산의 문제 자바에서 String은 불변이라 문자열에 대해 수정을 할 수 없다. String str1 = "abc"; String str2 = "def"; String resulta = str1 + str2; // abcdef 위와 같은 코드가 있을 때, 자바에서는 str1의 길이 + str2의 길이를 가지는 새로운 String을 만들어 낸다. 따..
-
Multiple Assertions☕️ java 2023. 10. 29. 12:47
우테코 프리코스 - 자동차 경주 게임 미션을 진행하면서 하나의 테스트 함수에서 기능에 대해 여러 결과를 검증하기 위해서 assertThat() 을 여러 번 이용해 검증을 했다. 하지만, 이 방법을 사용하다 보니 각 검증 코드가 실패한다면 다음 검증을 수행하지 않고 테스트 함수가 바로 중단되었다. 🆚 assertThat 과 assertAll assertThat을 여러개 사용해서 여러 결과를 검증하는 방법을 사용했을 때는 하나의 검증 코드가 실패하면 그 다음 검증들은 수행되지 않았기에 여러 검증 코드들을 assertAll 으로 grouping 하여 모든 검증을 수행하고 나온 결과를 한번에 볼 수 있도록 했다. assertThat을 이용한 테스트 코드 @Test void assertThatTest() { //..
-
[우아한테크코스-프리코스] 1주차 숫자야구 회고를 해보자 ⚾️⭐️ 우아한테크코스 2023. 10. 26. 14:15
우아한테크코스 - 프리코스에 참여하고 첫 주의 미션으로 ‘숫자야구’를 구현했어야 했다. 🔗 나의 Pull Request Link ⚾ 숫자야구 🎯 요구사항 [x] 1 ~ 9 사이의 서로 다른 수로 이루어진 3자리 수를 맞추기 [x] 같은 수가 같은 자리인 경우 스트라이크, 다른 자리인 경우 볼 [x] 컴퓨터가 1 ~ 9 까지의 서로 다른 임의의 수 3개를 선택 [x] 게임 플레이어는 서로 다른 3개의 숫자를 입력하고 컴퓨터는 입력한 숫자에 대한 결과 출력 🤔 고민 1️⃣ 숫자야구에 필요한 상수들을 어떻게 관리할까? 숫자야구에서 필요한 상수들이 여러개 있었다. 몇 자리 수인지 게임 재시작 입력 값 게임 종료 입력 값 처음 생각한 것은 static final 변수로 선언해 사용하는 곳에서 사용하도록 했다. p..