본문 바로가기

전체 글232

[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.
Aws saa C03 후기 시험을 보게 된 계기1학기 종강하고 의미 있는 방학을 보내고 싶어서 4주정도 공부해서 aws-saa 자격증을 취득했다.그동안 프로젝트를 위해 aws를 사용할 때는 항상 블로그 글에 의존하면서 세팅했던 기억이 있다.각각 설정해준 것의 의미도 잘 모르고 사용하고 있어서 언젠가 한번 제대로 공부해야겠다고 생각하고 있었다.이전에 sqld를 공부할 때 데이터베이스와 SQL에 대한 이해가 늘어났듯 이번에도 같은 느낌으로 준비해봤다. 그리고 aws를 사용할줄 안다고 해서 그걸 객관적으로 증명하는 건 어렵다고 생각한다.그런 측면에서도 자격증이 있는게 더 취업에도 도움이 될 것 같다는 생각으로 준비하게 됐다.사실 무엇보다 자기 만족인 것 같다. 왜 saa인가?https://aws.amazon.com/ko/certific.. 2024. 8. 7.