본문 바로가기

프로젝트44

[사이드 프로젝트 : DevToolKit] 왜 트랜젝션 Requires_new가 안되는가? 유저관련된 로직을 하다가 맞다은 에러?? 비밀번호 5회틀릴시 로그인 막기 현재 유저가 로그인할때 5회 틀릴시 로그인을 막고 있다. fun login(request: UserLoginRequest): UserLoginResponse { val user = userRepository.findByEmail(request.email) ?: throw RestException.notFound(ErrorMessage.NOT_FOUND_USER.message) if (!user.isEnabled || !user.isVerified) { throw RestException .badRequest(ErrorMessage.IMPOSSIBLE_LOG.. 2024. 9. 20.
어쩌다 보니 사이드 프로젝트..ㅎㅎ 사이드프로젝트를 진행하게 되었다.일단 혼자 프로젝트하기엔 계속 쳐지기도 하고,,, 뭐가 프론트도 있으면 좋을것같다.. 라는 생각이 들어서 이번에는 디자이너 2분, 프론트 개발자 1분, 백엔드 개발자 1명(나) 이렇게 진행하게 되었다. 일단 적용해보고 싶은 것도 많고 배포도 잘해보고 싶고...  머리를 싸매면서 어떻게든 열심히 해보겠습니다.파이팅..! 2024. 9. 10.
[개인프로젝트 리팩토링] 멀티모듈에 대한 회고..? 최근 모듈을 추가하면서 후회?? 회고?? 한 느낌을 작성하고자 한다.  현재 모듈 구성  간단히 이미지로 보자면 이런구성이다. 일단 멀티모듈로 COMMON, CUSTOMER, FCM, JOB ,WALKER 총 5개의 모듈로 구성중이다.여기서 COMMON에 domain관련된 엔티티와 CUSTOMER와 WALKER에 공통적으로 쓰이는 AUTH(로그인, 토큰)관련 로직들이 있다. 그래서 CUSTOMER와 WALKER관련된 코드를 작성한후 FCM코드를 짤때 dependency에 COMMON모듈을 추가해야하나?? 하는 고민이 있었다. 그러려면 AUTH관련된 코드들 떄문에 OpenFeign, Redis와 관련된 설정값을 넣어줘야했다. 그것은 매우 쓸모없는 행위라고 생각했다.일단 FCM에서 관련된 코드들을 사용하지 .. 2024. 8. 21.
[개인프로젝트 리팩토링] 데이터베이스 레플리케이션 적용하기 데이터베이스 레플리케이션을 적용해보았따.  레플리케이션 왜 필요한가? 보통 개인프로젝트 하다보면 데이터베이스를 한대만 운영한다. 데이터를 읽고 쓰는 작업이 하나의 데이터베이스에서 수행된다는 의미다 근데 갑자기 트래픽이 폭주했다고 가정해보자.DB관점에서는 크게 2가지문제가 발생가능하다. 1. SPOF물론 트랙픽에 대응해 DB성능 한대의 성능을 Scale up하는 방법도 존재한다. 그러나 한대의 데이터베이스가 다운될 경우 그냥 서비스가 다운이다. 데이터를 백업하지 않았다면 더 큰일... 그래서 SPOF 하나의 장애가 시스템 전체 장애로 이어지는 상황이 발생하게 된다. 2. 성능저하하나의 데이터베이스에 읽고 쓰는 작업이 모두 일어나다보면 부하가 늘어난다. 물론 이부분도 DB성능을 향상시키는 방법도 존재하지만... 2024. 8. 3.
[개인프로젝트 리팩토링] Actuator, Prometheus, Grafana 구축 이미 어느정도 모듈로 나누고 코드를 80%이상 짠 상태라서 모니터링 환경을 구축해보았다. 구조 구조라고 말하기에 애매하지만 Spring boot의 메트릭정보를 Prometheus가 수집하여 해당 내용을 Grafana가 시각화한다. 1. 디펜던시 추가implementation 'org.springframework.boot:spring-boot-starter-actuator'runtimeOnly 'io.micrometer:micrometer-registry-prometheus' 이후 localhost:{포트}/actuator에 접속해보면 요렇게 제공하는 엔드포인트들이 나온다.Prometheus에서 사용되는 메트릭을 노출시키기 위해 밑의 내용을 yml에 추가한다.management: endpoints: .. 2024. 8. 3.
[개인프로젝트 리팩토링] 리팩토링 계획 최근에 쉬다가 개인프로젝트를 조금 널널하게 리팩토링중이었다. 그래서 무엇을 리팩토링하고 있는지 정리해보고자 한다.그에 대한 자세한 얘기는 차차 다룰 예정이다. 프로젝트 리팩토링 첫번째로 멀티모듈개인프로젝트에는 지금 Customer와 Walker가 섞여있다. 그니까 약간 Admin코드랑 Customer 코드가 한 프로젝트에 섞여있는 느낌??그래서 모듈을 나누고자 한다. 1. Common 모듈domaincommon code (위치, auth 관련)2. Customer 모듈산책 알바를 신청한 고객3. Walker 모듈산책 알바를 하는 고객(알바생느낌)4. Batch 모듈Spring Batch관련 코드이렇게 4모듈정도로 나눌 예정이다.사실 Common모듈은 조금 애매함이 있어서 나중에 고민좀 해볼 예정  두번째.. 2024. 8. 1.
728x90