전체보기
-
Jobrunr 사용한 Springboot에 스케줄링 작업 구현Spring Boot 2025. 1. 30. 00:20
배경Spring Scheduler는 간단하지만 실패시 처리/실행 로그 확인 같은 작업이 굉장히 불편하다.Jobrunr를 사용하면 Spring Scheduler의 불편함을 해결할 수 있다.별도 구축없이 내장 dashboard를 제공 (실패/성공 이력 모니터링 가능, 스케줄링 삭제, 재시도 가능)애너테이션 기반 내장 스케줄링 지원 (@Recurring)API 기반 작업 등록 지원 (enqueue, scheduleIn, schedulerRecurrently)실패 시 재시도, 부가처리 가능사용 방법이 간단하여 spring batch 처럼 많은 공부를 필요로 하지 않는다. (Java 8 문법만 알면 이해 가능하다.) 공식 문서 : https://www.jobrunr.io/en/documentation/ Docu..
-
[springboot 예외 처리 안티패턴 정리] Exception Handling Worst PracticeSpring Boot 2024. 12. 30. 01:05
개발자로 회사를 4곳을 거치며 다양한 예외처리 방식을 경험했다.예외처리 방식의 정답은 없지만 틀린 답은 있었다. 해서는 안되는 안티패턴을 정리 해본다.선행 지식 java error : https://yeoon.tistory.com/1351. 클라이언트에게 검증 위임하기 (X)서버의 입력 유효성 검사는 반드시 서버에서 이루어 져야한다.실무에서 클라이언트에서 검증을 이미 진행한다는 이유로, 서버에서 입력 값 검증을 하지 않는 경우가 있었다.유효성 검사를 넣으면, 개발 속도가 느려진다는 이유 였는데 이는 굉장히 위험하다.사용자는 반드시 실수한다. 사용자는 알고도 잘못된 파라미터를 보낸다.900만원 9000원으로 조작하여 구매한 이야기 : https://www.seoul.co.kr/news/newsView.ph..
-
코딩 규칙 정하기 하루 전JAVA 2024. 12. 18. 00:50
코딩 규칙 정하기에 앞서 코딩 규칙이 필요한 이유을 작성해본다.코딩을 잘한다는 것은?개발이라는 행위는 대부분 특정 조직에서 이윤을 만드는 것이 목적이다. (세상의 문제를 해결한다고는 하지만, 대부분이 돈이 되는 문제를 해결한다)회사 입장에서 개발의 목표는 짧은 리드타임, 큰 경제적 가치 창출이 전부다. (https://yeoon.tistory.com/178)경영자 입장에서 개발 관련해 해야할 일은 너무 쉽다. 분기별 인건비만 잘 관리하면 된다. 개발에서 이윤 아웃풋을 만들기 위한 투입 리소스는 100% "인간"이다.(서버비, 운영비 제외)경영자 입장에서 개발을 잘하는 사람은 기간, 예산에 맞춰 적시에 업무를 완수하는 사람이다.회사 입장에서 코딩을 잘하는 개발자는 요구사항을 짧은 기간 내에 완수하는 사람이..
-
MySQL 관련해 신경쓰면 좋은 것 (feat. 성능)Spring Boot/DB 2024. 11. 13. 21:48
1. mysql 5.7.20 → mysql 8.0 아키텍처 변경Query cache가 MySQL 5.7.20부터 depreciated 되고, 8.0을 기점으로 삭제(https://dev.mysql.com/doc/refman/5.7/en/query-cache-configuration.html)트래픽 많아지면서 발생하는 DBMS의 Query cache 업데이트 비용과, 운영중 발생하는 캐시 stale 문제가 Query cache 기능을 제공하는 이점 보다 심각하다 판단하여 삭제mysql 버전을 올렸는데 더 느려진 경우가 있는데 Query cache가 없어졌기 때문. 캐시는 애플리케이션 단에 직접 구현해야한다. 2. mysql 5.7.20 → mysql 8.0 Storage 엔진query 실행하는 구현체 엔..
-
Lombok 사용시 주의점 (쓰지 말아야 할 Lombok)Spring Boot 2024. 11. 12. 23:44
Modern Java 에서는 Lombok 사용을 지양하고 있다. [참고 : https://www.danvega.dev/blog/no-lombok] 큰 이유는 이러하다. 1. IDE 기능으로 디버깅을 어렵게 한다.2. Annotation Processing에 충돌을 일으킨다.3. 숨겨진 코드가 버그를 유발 이에 따라서, Java 17부터 Lombok의 대부분 기능을 대체할 수 있는 record 클래스, Builder가 필요하다면 IDE로 생하길 권장한다.하지만, 실무에서는 Java 8을 쓰는 것이 대부분이다. Lombok을 쓰지 않을 수는 없기 때문에 아래의 Lombok 사용법을 꼭 읽어보고 주의해서 사용해야한다. 배달의 민족에서 기술이사로 있는 손권남 님의 블로그를 보면Lombok best pract..
-
iterm2 설정하기Spring Boot/환경설정 2024. 11. 12. 23:10
Item2 설치하기 : https://iterm2.com/oh-my-zsh 설치하기 : https://ohmyz.sh/#install oh-my-zsh 테마 변경 : https://github.com/ohmyzsh/ohmyzsh/wiki/Themes터미널 컬러 프리셋 설치 : https://github.com/wesbos/Cobalt2-iterm터미널 폰트 설치 : https://github.com/powerline/fonts oh-my-zsh 플러그인 설치 - 터미널 명령어 자동완성- 명령어 컬러 하이라이트 git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins..
-
IntelliJ 테스트 관련 Live Template 생성하기Spring Boot/인텔리제이 2024. 11. 10. 23:24
1. Live Template 설정 cmd + shift + a > Live Template+ 버튼 클릭2. Group 생성- 테스트 목적의 live template을 생성할 의도로 Test group 생성 3. Live Template 생성- + 버튼 > Live Template 클릭하고 아래와 같이 코드릴 입력한다. - template text 창 아래 define 버튼을 눌러 java를 선택한다.- 그러면 우측에 Reformat according to style과 use static import if possible 체크박스가 생성되는데 선택해준다. - Edit Variables를 클릭하고 아래와 같이 입력한다.4. Live Template 사용위 설정을 통해 다음과 같이 단축키로 뼈대 코드를 생..
-
2025 인텔리제이 추천 플러그인 (recommended intellliJ plugin)Spring Boot/인텔리제이 2024. 11. 10. 21:19
1.배경인텔리제이 첫 설정시 추가한 플러그인을 소개한다.2. IntelliJ pluginLinter 설치 (사용 이유 참고 : https://yeoon.tistory.com/151)SonarLint (자바) : 소나큐브에서 제작한 linterKtlint (코틀린) : 코틀린 공식 linterGitHub Copilot : 회사에서 사전에 사용승인 필요JPA Buddy : JPA 관련 도구 Entity 생성시에 도움된다.LangCursor : 마우스 커서에 현재 영어인지 아닌지 확인. 한국인이 제작한 플러그인으로 non-english 언어 사용자의 편의를 위함String Manipulation : String 조작 관련 지원 도구 (String 관련 작업의 생산성 상승)camelCase ↔ snake cas..