스터디 & 프로젝트/Init Cloud 팀 프로젝트
-
[Spring Boot] 어떻게 DTO를 재구성할까?스터디 & 프로젝트/Init Cloud 팀 프로젝트 2023. 3. 20. 16:19
요즘 주변에서 들은 얘기나 하나 둘 본 자료, 강의에서 뭔가 떠오르는게 있었다. 바로 끔찍하게 구성된 DTO를 다시 만드는 것이었다. 공식적으로는 끝난 프로젝트임에도 맘에 안드는 부분을 바꾸고 싶었다. 중복을 제거하려고 무자비하게 상속관계로만 작성한 DTO 클래스는 너무나도 유지보수가 힘들다는 것이었다. 그래서 이 DTO를 재구성해보기로 했다. 문제 상황 대충 이런식으로 구성된 DTO 패키지가 있었다. 비즈니스로직마다 각각의 DTO를 가지고 있고 부모인 UserDto부터 내려오는 구조다. 이게 너무 난잡하다고 생각했다. 어떻게 개선할까? 우선 UserDto라는 부모 클래스는 유지하기로 했다. Dto를 보면 Profile, Retrieve 등등 회원 정보를 관리하기 위한 Dto가 있고 Signup, Aut..
-
[MariaDB] 인덱스로 성능 향상 체감하기스터디 & 프로젝트/Init Cloud 팀 프로젝트 2023. 3. 3. 22:40
이유 프로젝트로 백엔드 API를 만들고 있었다. 이미 기능은 모두 완성되었고 리팩토링이나 버그 수정 등등 만이 남았다. 예전부터 DB 성능 개선을 한번 해보고싶어서 해볼까 했다. 그래서 가장 많이 들어왔던 적절한 Index 적용을 통한 조회 성능 개선을 하고싶었다. 근데 문제는 DB 자체의 레코드가 많지 않다는 것이었다. 진행하는 프로젝트 특성 상 일반적인 웹 서비스처럼 Insert, Update 쿼리가 많이 발생하지는 않고 DB에 저장된 기본 데이터를 조회하는 로직이 많았다. 그래도 뭐 일단 진행해보기로 했다. 인덱스는 PK가 아닌 UNIQUE VARCHAR 필드에 지정했다. 최초 시도 정말 규모가 작은 DB이다보니 솔직히 성능 향상을 체감하기는 어려울 것이라 생각했다. 그도 그럴 것이 히스토리를 관리..
-
[Swagger] NullPointerException 잡기스터디 & 프로젝트/Init Cloud 팀 프로젝트 2023. 2. 23. 00:43
오류 발생 java.lang.NullPointerException: null at springfox.documentation.builders.ParameterMerger.lambda$mergedParameters$2(ParameterMerger.java:87) ~[springfox-core-3.0.0.jar!/:3.0.0] at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) ~[na:na] at java.base/java.util.ArrayList$ArrayListSpliterator.tryAdvance(Unknown Source) ~[na:na] 스프링 부트 프로젝트를 빌드하고 실행하니 앱 런타임 시점에서 NPE가 발생했..
-
[Azure] Spring Boot 프로젝트를 App Service에 배포하기스터디 & 프로젝트/Init Cloud 팀 프로젝트 2023. 2. 15. 18:09
개요 프로젝트를 진행하면서 외부에 인가 서버를 하나 노출시켜야 할 일이 생겼다. 서비스 로직을 위한 API 서버는 DB와 함께 도커라이징 되어 로컬호스트 환경이던 SaaS로 서비스 되던 배포 예정이었다. 다만, 일부 비즈니스 로직이 요구하는 기능이 인가를 받아서 해당 외부 Github API에서 데이터를 긁어온 후 처리해야 했다. 여기서 고민한 점이 있다. 기존에 Docker-compose로 관리하던 솔루션에 함께 묶어 배포할 것인가? 아니라면 클라우드에 SaaS 형태로 배포할 것인가? 전자의 경우, 인가에 필요한 클라이언트 비밀 값을 함께 묶어서 배포해야 했다. 이 부분이 제일 맘에 들지 않았다. 후자의 경우, 무조건 아웃바운드로 외부망을 타야 했다. 선택 여기서 후자를 선택하게 되었는데 그 이유는 다..
-
[Spring Boot] Github OAuth 적용하기스터디 & 프로젝트/Init Cloud 팀 프로젝트 2023. 1. 31. 22:39
Spring Boot를 활용해서 깃허브 앱을 만들 필요가 있었다. 그런데 이 앱을 OAuth App으로 만들어야 하는지, Github App으로 만들어야 하는지 아니면 개인키로 인증 받아 권한만 받아와야하는지 조금 헷갈렸다. 그래서 우선 Github OAuth를 적용하고 후에 인증 방식에 활용하기로 했다. 앱, 클라이언트 ID 및 비밀 값 생성 우선 깃허브 개인 또는 조직 설정에서 개발자 설정을 찾는다. 개발자 설정에서 앱 유형을 선택하고 설정 페이지에서 앱을 생성하자. 나는 각 앱 유형에 대한 이해가 아직 부족해서 우선 깃 허브 앱을 선택했다. 우선 URL 설정이 필요하다. 깃허브 앱이 동작할 URL과 OAuth 요청으로 리디렉션될 콜백 URL을 지정해야 한다. OAuth를 통해 얻은 접근 권한으로 어..