본문 바로가기
728x90

분류 전체보기233

[spring swagger로 에러문서화하기] 에러를 문서로 만들기 (2/2) 일단 이전에 에러를 어떻게 만들었고 global handler를 어떻게 만들었는지를 이전 게시물을 통해 확인하고 이 글을 읽도록 하자.https://haward.tistory.com/250 [spring swagger로 에러문서화하기] 에러 형식 정의 및 handler 정의 (1/2)시작하며공용 에러를 정의하고 스웨거를 통해 에러에 대해서 문서화를 하는 방법에 대해서 이야기 하도록 하겠다.이 게시물은 공통으로 사용할 에러의 형식을 만들어서 설정하는 부분을 먼저haward.tistory.com 이전 두 게시물에서 API의 에러를 처리하는 방법과 공통 에러 형식을 정의하는 방법을 다루었다. 이제는 Swagger를 이용해서 정의된 에러를 문서화하는 방법에 대해 알아보겠다. 0. 스웨거를 커스텀 하려면스웨거를 .. 2024. 9. 28.
[spring swagger로 에러문서화하기] 에러 형식 정의 및 handler 정의 (1/2) 시작하며공용 에러를 정의하고 스웨거를 통해 에러에 대해서 문서화를 하는 방법에 대해서 이야기 하도록 하겠다.이 게시물은 공통으로 사용할 에러의 형식을 만들어서 설정하는 부분을 먼저 이야기 하고 다음 게시물에서 swagger로 에러를 문서화 하는 방법에 대해서 이야기하도록 하겠다. 이펙티브 자바 item 38 번확장할 수 있는 열거 타입이 필요하면 인터페이스를 사용하라 라는 내용이 있다.public interface Operation { double apply(double x, dobule y);}public enum BasicOperation implements Operation { PLUS("+"){ public double apply(double x, dobule y) {return x + y;.. 2024. 9. 21.
[k8s] kubectl 명령어가 동작하지 않을 때 (왜 쿠버네티스는 스왑 메모리 사용을 허용하지 않는가?) 문제 상황kubectl get podskubectl 명령을 실행했는데 갑자기 다음과 같은 로그가 나왔다.E0826 15:09:19.548029 5807 memcache.go:265] couldn't get current server API group list: Get "https://192.168.64.4:6443/api?timeout=32s": dial tcp 192.168.64.4:6443: connect: connection refusedE0826 15:09:19.548319 5807 memcache.go:265] couldn't get current server API group list: Get "https://192.168.64.4:6443/api?timeout=32s": dial .. 2024. 9. 17.
Spring Boot에서 Swagger를 통한 API 문서화 설정 가이드 시작하며API를 개발할 때, 문서화는 매우 중요한 작업 중 하나이다. 특히 여러 명의 개발자가 함께 작업하거나 외부 클라이언트가 API를 사용할 때, 명확하고 잘 정리된 API 문서는 필수이다. 이러한 API 문서를 자동으로 생성하고 관리하는 도구로 Swagger는 매우 유용하다. 이 글에서는 Spring Boot 애플리케이션에서 Swagger를 이용해 API 문서를 설정하고 JWT 인증을 추가하는 방법을 설명하겠다.1. Swagger 도입 이유Swagger를 도입하는 이유는 크게 세 가지입니다.1.1. 기존 API 문서화 방식의 문제점기존에 프로젝트를 진행할 때 POSTMAN이나 노션 등에 API 문서화를 진행했다.이렇게 하면 코드를 수정하면 그때그때 문서를 수정해야만 하는데 이 부분은 너무 번거로운면.. 2024. 9. 13.
Aws SQS Spring으로 Listener Stop Start하기 이 글을 읽고 기본 SQS세팅은 하고 진행하시길 바랍니다.https://haward.tistory.com/246 sqs spring boot 사용법한국어로 된 블로그 중에 공식문서대로 설정한 사람이 거의 없는 것 같고 버전이 많이 달라져서 최신화된 글을 위해 작성합니다.이 글은 2024-8월에 동작이 확인된 글 입니다. SQS설정build.gradle//sqhaward.tistory.com 문제 상황프로젝트를 진행하는데 라이엇 API 갯수가 초과됐을 때 SQS에 있는 데이터를 처리하지 않고 잠시 이벤트를 끄는게 필요하다.따라서 SQS에 이벤트를 받는 이벤트 리스너를 종료하는 방법을 알아보자.[이전 코드]이전의 SqsListenerConfig 코드를 보면 @Configurationpublic class S.. 2024. 8. 13.
sqs spring boot 사용법 한국어로 된 블로그 중에 공식문서대로 설정한 사람이 거의 없는 것 같고 버전이 많이 달라져서 최신화된 글을 위해 작성합니다.이 글은 2024-8월에 동작이 확인된 글 입니다. SQS설정build.gradle//sqsimplementation platform("io.awspring.cloud:spring-cloud-aws-dependencies:3.0.1")implementation 'io.awspring.cloud:spring-cloud-aws-starter-sqs:3.2.0-M1' application.ymlcloud: aws: region: static: ap-northeast-2 credentials: access-key: 엑세스 키 secret-key: 시크.. 2024. 8. 13.
[문제해결] Spring webSocket Test 삽질 일기 (생성자 직렬화 문제) 이 글은 문제 해결을 위해 삽질을 적어놓은 글 입니다. 소켓 테스트를 짜는 분이 있다면 도움이 될 수도 있기 때문에 코드 위주로 첨부하도록 하겠습니다.어떤 문제인지만 궁금하다면 해결 방법에 가서 보시면 됩니다.문제 상황 및 세팅간단한 시그널링 테스트를 진행 하고 있었는데 어이없는 상황에 부딪혔다.코드를 보면 알겠지만, 웹소켓 통합 테스트를 위해서 다음과 같은 세팅을 해뒀다. 1.  sender와 receiver를 분리해서 2개의 엔티티를 만들어준다.2. workspace를 만들어서 각 유저를 해당 워크스페이스에 가입을 먼저 하고 진행한다.거기까지가 이 부분이다.성공한 테스트 상황[세팅]@BeforeEachpublic void setup() { MockitoAnnotations.openMocks(th.. 2024. 8. 7.
Spring Security 단위 테스트 스프링 시큐리티를 통해서 유저 인증을 하고 시큐리티 컨텍스트에서 로그인 된 유저의 정보를 받아와서 처리하는 로직이 많이 있었다.그동안은 직접 JWT를 넣어서 직접 테스트를 진행했었다.매번 @SpringBootTest를 사용해서 테스트를 하자고 하니 테스트 속도가 너무 오래걸렸다. 그래서 오늘은 Spring Security를 활용해서 단위 테스트를 하면서 알게 된 내용들에 대해 정리하고자 한다. Spring에서 단위 테스트를 할 때, 테스트 위에 붙혀줘야하는 어노테이션이 있다.배경 지식Junit 버전이 5 미만인 경우@RunWith(SpringRunner.class) 또는 @RunWith(MockitoJUnitRunner.class) 등을 사용해야 한다.Junit 버전이 5 이상인 경우@ExtendWith.. 2024. 8. 7.
[문제 해결] github Action + AWS CodeDeploy 배포 환경변수 삽질일기. 요약시간이 급하신 분은 가장 아래로 내리셔서 문제 해결만 보시면 됩니다. 이 글은 저의 삽질일기를 적어뒀습니다.문제 상황어느날 갑자기 프론트 팀원에게 다음과 같은 연락이 왔다.그럴리가 없는데,, 간단한 Dto 변경을 진행하고 머지를 했었다. 그리고 그 변경사항이 스웨거에 제대로 반영된 걸 확인했기 때문에 이런 문제가 생길리가 없다고 생각했다.현재 내 개발환경은 aws에 개발 서버를 올려두고 개발을 진행하고 있다.CI/CD 설정을 github Action을 사용해서 설정해뒀고, AWS CodeDeploy를 사용해서 개발을 진행한다.main 브랜치에 push 되는 경우에 action이 감지해서 배포를 진행한다.CICD.yml 파일# 1 워크플로의 이름 지정name: CI and Deploy to Amazon.. 2024. 8. 7.
728x90