목록전체 글 (65)
우당탕탕 개발일지
스케줄링이란 일정한 시간 간격으로 반복적인 작업을 수행하는 도구이다. 스프링 부트 애플리케이션에서는 주기적인 작업을 스케줄링하기 위한 어노테이션 기반의 방법을 제공한다. @Scheduled 어노테이션을 사용하면 일정한 시간 혹은 특정 시간에 코드가 실행되도록 설정할 수 있다. 스케줄러 속성fixedDelay: 메서드의 실행이 끝난 시간을 기준으로, 설정된 밀리세컨드 간격마다 실행fixedRate: 메서드의 실행이 시작하는 시간을 기준으로, 설정된 밀리세컨드 간격마다 실행initialDelay: 설정된 밀리세컨드 시간 후부터 fixedDelay 간격마다 실행cron: Cron 표현식을 사용하여 설정한 시간에 실행* fixedDelay의 경우 해당 작업이 끝난 시점부터 시간을 측정하고, fixedRate의 ..
최근 개발 중인 프로젝트에서 Postman을 통해 API를 호출하여 테스트를 진행했지만, 유저 데이터를 수작업으로 입력하다 보니 입력 실수나 불완전한 데이터로 인해 테스트 결과가 일관되지 않거나 예상과 다르게 나오는 경우가 발생하였다. 위와 같은 문제를 해결하기 위해 테스트 코드를 도입하게 되었다. 단위 테스트(Unit Test)란, 하나의 모듈을 기준으로 독립적으로 진행되는 가장 작은 단위의 테스트이다. 여기서 모듈은 하나의 기능 또는 메서드이다. 단위 테스트는 해당 부분만 독립적으로 테스트하기 때문에 문제점을 빠르게 확인할 수 있다. 이러한 이유로 최근에는 TTD (Test-Driven-Development) 라는 테스트 주도 개발이 많이 사용되고 있다. 일반적으로 개발 흐름이 코드를 작성한 후 테..
Redis는 데이터를 주로 메모리에 저장하기에 매우 빠른 데이터 액세스 속도를 제공한다. RefreshToken의 경우, 자주 액세스 되는 데이터이기 때문에 데이터를 캐시로 사용하는 데 매우 효과적이었다. 가장 큰 장점은 Time to Live (TTL) 설정을 통하여 만료 시간을 설정하는 기능을 가지고 있다. Redis 사용 순서는 다음과 같았다. 1. 의존성 추가implementation 'org.springframework.boot:spring-boot-starter-data-redis' 2. application.yml 작성spring: data: redis: host: localhost port: 6379 password: ${REDIS_PASSWORD} # ..
스프링에서 API 응답 방식으로 보통 ResponseEntity 방식을 사용한다. ResponseEntity는 응답의 상태 코드와 데이터를 포함하지만, 각 API마다 응답 형식이 달라진다. API 공통 응답 구조는 API 개발 및 유지보수의 효율성을 높이며 클라이언트에게도 일관성 있는 응답을 전송하는 것은 중요하다. API 공통 응답 패키지 구조는 다음과 같다. common ├─constants ├─ ErrorCode └─ SuccessCode ├─dto ├─ ApiErrorResponse └─ ApiSuccessResponse ├─exceptions ├─ GeneralException └─ GlobalExceptionHa..
Swagger는 Spring-Fox, Spring-Doc 2가지 라이브러리가 존재한다.Spring-Fox는 오래전에 나온 라이브러리이기 때문에, Spring-Doc를 사용할 예정이다. 1. 의존성 추가dependencies { . . . //Security implementation 'org.springframework.boot:spring-boot-starter-security' testImplementation 'org.springframework.security:spring-security-test' // swagger implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.4' } 2. SwaggerConfig..
소규모 프로젝트를 많은 팀원과 함께 진행하다 보니, 이전에 사용해보지 않았던 Issue 기능을 경험하게 되었다. 1. Git 컨벤션 개개인마다 Git 사용 방식이 다르기 때문에 컨벤션을 정해야 한다. 가장 기본적인 컨벤션은 다음과 같다. [main] 브랜치에는 직접 커밋을 올리지 않는다.기능 개발을 하기 전에 [main] 브랜치를 기준으로 새로운 브랜치를 만든다. master: 전체 버전을 관리하는 메인 브랜치💡 master / { 버전 }feature: 새로운 기능을 개발하는 브랜치 💡 feature / { 구현 문항 번호 } / { 이슈 번호 }test: 테스트 코드를 위한 브랜치💡 test / { controller } / { 이슈 번호 } / { 버전 } >💡 기능 태그_freatur..
Firebase는 Google에서 개발한 클라우드 기반 애플리케이션 개발 플랫폼이다. 애플리케이션 기능 개발에만 집중할 수 있도록 백엔드의 부가적인 부분을 처리해준다. AWS와 같은 클라우드 서비스는 유연하지만, 사용량이 적어도 과금이 발생할 수 있는 위험이 있다. Firebase는 초기 단계의 프로젝트나 유저풀이 적은 경우에 적합하다. Firebase는 무료로 시작할 수 있고, 유료 전환도 사용량에 따라 유연하게 조정할 수 있어 초기 리스크를 최소화할 수 있다. 이러한 이유로 Firebase를 사용하게 되었다. 현재 제공하고 있는 Firebase의 기능들은 다음과 같다. 이 중에서 Cloud Functions, Cloud Firestore, Hosting 세 가지를 사용한다. 1. Cloud Func..
프로젝트를 진행하면서 가상 API 서버가 필요하여 해당 서버에 JWT 서비스를 적용하게 되었다. GitHub - jwtk/jjwt: Java JWT: JSON Web Token for Java and AndroidJava JWT: JSON Web Token for Java and Android. Contribute to jwtk/jjwt development by creating an account on GitHub.github.com dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web..