Spring30 PostMan으로 GraphQL요청 하기 오늘은 GraphQL개발을 진행하며 요청과 응답을 클라이언트 관점에서 확인해 볼 수 있도록 PostMan을 활용하여 서버로 요청을 보내는 법을 공유해 보도록 하겠습니다.RestApi를 개발해오며 정말 많이 사용한 PostMan입니다. 예전에 PostMan으로 gRPC요청도 해보았는데 PostMan으로 GraphQL요청 또한 손쉽게 가능합니다.요청할 서버는 localhost:8080 로컬환경입니다. GraphQL은 한개의 엔드포인트만 갖기에 graphql로 요청을 보낼 수 있도록 설정합니다. 또한 GraphQL은 본질적으로 HTTP 프로토콜 이기 때문에 GET, POST를 설정할 수 있습니다. 다만 일반적으로 GET요청에 대한 한계가 있기 때문에 대부분 GraphQL 요청은 POST로 처리합니다. 이 부분.. 2025. 5. 6. Spring Framework에서 복잡한 비즈니스 로직 구조화하기 Filter Chain 오늘은 스프링 프레임워크에서 복잡한 비즈니스 로직을 구조화해 본 경험을 이야기 해보려고 합니다.제가 실제로 해결하고자 했던 비즈니스를 기반으로 설명하면 좋겠지만 아무래도 보안상 문제가 있을 수 있어 배달 어플에서 사용 가능한 쿠폰 목록을 고객에게 안내하는 비즈니스 도메인이 가장 적절하다고 생각하여 해당 도메인으로 설명을 해보도록 하겠습니다. 우리가 해결하고자 하는 비즈니스 도메인은 다음과 같습니다.1. 고객이 보유한 쿠폰 목록 중 주문에 사용 가능한 쿠폰 목록을 보여준다.2. 사용가능한 쿠폰에 대한 정의는 다음과 같습니다.- 고객이 보유한 쿠폰중 사용기한이 만료되지 않은 쿠폰- 고객이 보유한 쿠폰중 전체 브랜드 또는 주문하고자 하는 가게 브랜드에 적용이 가능한 쿠폰- 고객이 보유한 쿠폰중 전체 지역 또는.. 2025. 4. 20. 레거시 Spring Framework Project 패키지 리팩토링 오늘은 팀원들과 협의해 리팩토링을 진행했던 이야기를 정리해보려 합니다.새로운 회사, 새로운 팀원, 기존 인원들의 개발 스타일에 적응해 나가며 이것저것 건의하고 의견을들어보고 개선해 나가야할 점들을 피력하고 있습니다.입사초기 Spring Framework와 Mybatis로 구성된 백오피스 서버 추가 기능개발 및 유지보수 업무를 진행했었습니다. 업무를 진행하며 큰 허들을 느꼈던 부분이 있었는데 그부분은 바로 지금은 너무나 당연 Dto 대한 책임분리였습니다.Spring Web Server를 구현한다면 일반적으로 데이터 전달을 위해 Dto를 많이 활용하실 겁니다. 다만제가 기능 추가, 유지보수업무를 받은 프로젝트는 모든 데이터를 HashMap으로 관리하고 상태를 변경하고 영속성에 저장하는 역할까지 책임지고 있.. 2025. 2. 16. Java 부동소수점 계산시 정확한 계산을 위해 왜 BigDesimal을 사용해야하는가? 오늘은 부동소수점 계산을 정확하게 하려면 왜 BigDesimal을 사용해야 하는지에 대해 한번 생각해 보겠습니다.부동소수점 정확도를 고민하게된건 회사에서 결제 서비스를 도입할 때였습니다.고객이 사용한 금액에 대해 수수료율을 계산하여 결제할 금액을 결정할 때 고객이 사용한 금액이 10원 단위로 딱 떨어지지도 않고 수수료율도 22%였기 때문에 double 자료형으로 수수료율을 계산하게 된다면 나머지가 남게 되어 순환소수가 발생해 버려 근삿값 2진수로 처리되어 오차가 발생할 여지 때문이었습니다.물론 큰 오차는 아니지만 회계, 세법 처리에 있어서 결제금액이 커질수록 작아 보이는 오차도 큰 금액이 되기 때문에 정확한 계산이 필요했었습니다.그래서 정확한 소수점계산을 위해 Java5에서 IBM의 기부로 완성된 Bi.. 2025. 2. 10. SpringFramework NullPointException 방지법 NullPointException자바 개발자라면 많이 마주치는 오류라고 단언컨데 이야기할 수 있을것 같습니다. 처음 자바 개발을 배우며 매번 만나던 오류였고 개발자로 취업후 2개월정도는 많이 고생했던 기억이 납니다. 이제는 NullPointException 에러방지는 몸에 습관이 되어서 잘 만나보지 못하지만 혹여나 NPE로 고생하시는 개발자분들 위해 간단하게 제가 Java Spring Framework에서 NPE를 방지하는 방법을 공유하도록 하겠습니다. // Db 엔티티 단건조회시 Optional 타입으로 조회Optional optionalBoard = boardRepository.findById(boardId);// 데이터가 존재하지 않을경우 체크if (optionalBoard.isEmpty()) { .. 2025. 1. 13. Private Docker Registre 구축 클라우드 서비스를 사용하지 않고 폐쇄 환경에서 CI/CD를 구축 하고 있습니다. Gitlap, Jenkins 파이프라인을 통해 CI 지속적인 통합 환경을 구축하였고 Docker Registry, Jenkins 파이프라인을 통해 CD환경을 구축하였습니다.그 중 오늘 소개할 방법은 Docker에서 공식적으로 제공하는 registry 이미지를 통해 프라이빗한 Docker image 저장소를 구축하는 방법입니다. 말이 뭔가 도돌이표인것같은 느낌이지만 Docker 환경에 Docker Image를 저장할 수 있는 Docker Registry 컨테이너를 띄워서 폐쇄환경에서 도커 이미지저장소를 구현해보겠습니다. Authentication// 아래 환경은 리눅스 Shell환경에서 진행이 됩니다.// 일단 간단하게 보안설.. 2025. 1. 8. 이전 1 2 3 4 5 다음