알게된 것 문제를 해결하기 위해 시도하며 새롭게 알게된 것은 무엇인가요?솔직히 아직 잘 모르겠다. 어떻게 설계를 해야 할지 잘 모르겠구어떤게 최선인지도 아직 잘모르겠다. 아직 내가 이겨내야할것이 굉장히 많기에 다른분들이 어떻게 작성을 하는지 보는데굉장히 달랐다. 거기서도 얻은 인사이트는 많이 없었던거 같다.여기는 어쩔수 없이 길게 조금씩 천천히 그리고 이겨낼거고결국은 성공할거다. 다음 목표 설정 반복적인 성장을 위한 실천 가능한 단기적인 목표를 설정해보세요!다음은 뭘해야 할까 스탭이 점차 올라가면 갈수록 더 힘들어지는거 같다. 올패스는 물건너갔고이제 최선을 다해서 다음을 준비를 해야겠다.~~~
DDD로 개발하라고 그러면 보통 헥사고날로 개발하지 않으면 DDD가 아니라고 말을한다.사실 이건 틀린 주장이라 생각한다. 애초에 DDD는 도메인 주도 개발으로 도메인을 중심으로 개발하면 상관없다.즉domain1 controller service repositorydomain2 controller service repositorydomain3 controller service repository이렇게 개발해도 도메인이 중심이기 때문에 이렇게 해도 DDD라고 말할 수 있다.하지만 저 구조에는 아주 치명적인 문제가 존재한다.바로 어떻게 데이터를 보내는지 즉, 통신에 문제가 발생한다. 왜냐하면 도메인1에서 데이터를 도메인2에게 데이터를 보내는 경우 혼재될 가능성이 존재하기 때문이다. 이걸 해결하..
알게된 것 문제를 해결하기 위해 시도하며 새롭게 알게된 것은 무엇인가요?TDD를 어떻게 하면 접근하면 되는지 알게 되었습니다.테스트 더블: spy,mock, stub의 차이점을 알게 되었습니다.2025.05.23 - [항해플러스WIL/테스트주도개발] - 테스트 더블은 테스트 두번하는 건가?다음 목표 설정 반복적인 성장을 위한 실천 가능한 단기적인 목표를 설정해보세요!동시성 제어를 하기 위해 어떤작업을 할 수 있을지 생각해보고 특정 상황에서 문제가 발생하였을때 혹은 더 좋은 방향으로 어떻게 하면 갈 수 있을지 고민해본다
TDD를 학습하다보면 테스트 더블이라는 말이 나온다. 그렇다면 테스트 더블은 테스트를 두번하는걸까?gpt한테 물어보니 이 용어는 영화 용어에서 스턴트 더블에서 왔다고 한다.그리고 찾아보니 더블이 두배라는 뜻이 있지만 대역이라는 뜻이 있다고 한다.그럼 뜻을 다시 해석해보면 테스트를 하기 위해 대역을 쓰는거라고 이해하면 될거 같다.요런 관점에서 생각을 해본다면테스트 더블에는 총 5가지의 대역들이 존재한다.mock, spy, stub, fake, dummy요렇게 5가지가 있다고 한다.이제 대역이라는 것을 바탕으로 생각을 해보면mock은 구현에 대한 대역spy는 구현에 대한 대역stub은 값에 대한 대역fake은 구현에 대한 대역dummy는 값에 대한 대역요렇게 나눌수 있을거다.근데 이상한건 구현3에 값이2개다..
학습 키워드Unit Test / Integration Test / E2E Test테스트 Pyramid테스트 커버리지 vs 유의미한 테스트유닛테스트라는건 뭘까?서비스단에서? 컨트롤단에서? 음 아무래도 상관없으려나유닛테스트는 단위테스트라고 하며그림을 보면 알수 있듯이 단위 테스트는 테스트 피라미드 바닥에 존재하며 굉장히 많은 수 가 있다는 것을 알 수 있습니다.이는 간단하게 작성이 되어진다는 뜻이 되어집니다.이전 포스트에서도 말했었지만 테스트코드는 굉장히 중요합니다. 그렇다는 이야기는 e2e를 하든 통합을 하든 유닛을 하든작성을 하는것이 좋습니다. 여기서 중요한 사실은 유닛테스트가 양이 제일 많다는 것입니다. 그렇다는건 유닛테스트를 중점으로 테스트코드를 짜야 된다는 뜻이 됩니다.그리고 그림에서 보면 알 수 ..
테스트 코드가 중요한건 개발자라면 누구나 인지하고 있다.하지만 생각보다 테스트 코드를 작성하는게 쉽지가 않다.어디부터 작성을 해야 하는걸까?뭘 어떻게 작성을 해야 하는걸까?그러다 개발이 종료된 이후에 테스트 코드를 도입하게 된다.그러면 의문이 드는게 검증이 되었는데 테스트 코드를 왜 짜는지에 대한 회의감이 들기 시작한다.결국 테스트코드는 작성하지 않는 꼴이 되버린다. 또 문제가 개발을 2번하는 느낌이 든다.이상하다. 분명 테스트 코드를 중요하다고 해서 테스트 코드를 짜는데 이게 따로 일을 하는 느낌이 든다.마치 구현 작업과 테스트 코드 작성 작업이 분리된 느낌이다.이게 나쁘다는게 아니다. QA테스트 같은 경우 개발이 완료된 이후에 QA가 테스트를 하게 된다.그러면 결국 2가지일을 따로 하게 될 수 도 있..
오랜만에 면접 공부를 진행하자.이 내용은 스파르타에서 진행했던 내용들을 토대로 정리한 내용이다.1. @Component, @Service, @Repository, @Controller 차이이 네 가지는 모두 스프링 컨테이너에 빈으로 등록되도록 도와주는 컴포넌트 스캔의 대상 어노테이션입니다.하지만 역할 구분과 내부 동작이 다릅니다.어노테이션설명@Component가장 일반적인 컴포넌트 등록용 어노테이션@Service비즈니스 로직을 담는 클래스에 사용. AOP 적용 시 의미 있는 대상@RepositoryDAO 계층에 사용. 스프링이 JDBC 예외를 DataAccessException으로 변환@Controller웹 요청을 처리하는 컨트롤러 클래스에 사용기존에 생각했을때 확인 목적으로 사용이 된다고 생각헀었다. ..
프로젝트에 선차감 방식을 도입하려고 합니다. 이 방식은 요청이 들어왔을 때 미리 자원을 차감하고, 대기 큐로 메시지를 전달할 수 있기 때문에 효율적인 흐름 제어가 가능합니다.하지만 선차감은 동기 방식으로 작동한다는 점이 고민입니다. 동기 방식 자체가 문제라기보다는, 이를 레디슨(Redisson) 분산 락과 함께 사용할 때 병목이 생길 수 있다는 점이 우려됩니다.레디슨은 분산 환경에서 락을 걸기 위한 네트워크 통신이 포함되어 있고, 여기에 동기 코드가 포함되면, 락 획득까지의 대기 시간이 누적될 수 있습니다.즉, 락을 기다리는 동안 동기 코드가 블로킹되면 전체 처리량이 감소할 수 있는 것이죠.그렇다고 선차감 로직을 비동기로 전환하면, 락 대기 시간은 줄어들 수 있지만, 정합성 문제가 발생하게 됩니다.실제로..