이번에 프로젝트를 하면서 백엔드 서버를 jar 파일로 gcp의 Ubuntu에 배포했었다. 그동안은 gcp 인스턴스를 종료할 일이 없어서 백엔드 서버를 수동으로 배포하고 실행을 시켰었는데, 이제 실제 서비스할 날이 다가오고 과부화 테스트를 진행하면서 인스턴스가 종종 꺼질 일이 생겼다. 그러다보니 점점 수동으로 실행시키기 귀찮아지도 실제 서비스 되었을 때 서버가 갑자기 셧다운 되는 등 예상하지 못한 일이 생길 수도 있으니 최대한 서버를 빨리 복구하고 실행을 시켜야겠다는 생각이 들었다. 그래서 jar 파일을 수동으로 실행시키는 것이 아닌 해당 인스턴스 리눅스에 등록해 자동실행 되게 설정해야겠다는 생각이 들었다. (자동 배포는 추후 Jenkins를 이용해서 할 예정이다.) 참고로 이 과정들은 root 계정으로 ..
스프링부트로 백엔드 개발을 하다보니 자연스럽게 lombok 라이브러리를 많이 사용하게 되었다. @Getter, @Setter, @RequiredArgsConstructor...등 lombok 어노테이션으로 빈에 필요한 기능들을 간단하게 구현할 수 있다. 그래서 아래와 같이 dependency를 설정한다. - gradle compileOnly 'org.projectlombok:lombok:1.18.20' annotationProcessor 'org.projectlombok:lombok:1.18.20' testCompileOnly 'org.projectlombok:lombok:1.18.20' testAnnotationProcessor 'org.projectlombok:lombok:1.18.20' - mave..
https://pamyferret.tistory.com/entry/Eclipse%EC%9D%B4%ED%81%B4%EB%A6%BD%EC%8A%A4-Dark-%EB%AA%A8%EB%93%9C-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0 Eclipse(이클립스) Dark 모드 설정하기 보통 코딩을 하는 사람들은 하얀 화면보다는 검은 화면을 선호한다. 그게 눈에 피로도도 덜 주고 모니터링 하는 곳에서는 전력 소모도 줄여준다고는 하지만... 아무래도 눈의 피로도를 줄여준다 pamyferret.tistory.com 이클립스 다크 모드를 설정하니까 갑자기 워크스페이스에 세로로 빨간 줄이 생겨났다. 이게 도대체 무엇인가 줄에 마우스를 올려보기도 하고 줄을 마우스로 드래그도 해봤지만 요지부동이었다...
보통 코딩을 하는 사람들은 하얀 화면보다는 검은 화면을 선호한다. 그게 눈에 피로도도 덜 주고 모니터링 하는 곳에서는 전력 소모도 줄여준다고는 하지만... 아무래도 눈의 피로도를 줄여준다는게 제일 중요한 것 같다. 아무래도 리눅스 화면도 같이 보다보면 검은 화면에 익숙해지고 말이다. 이클립스는 기본 하얀 화면이다. 하지만 이클립스도 코딩할 수 있는 IDE인 만큼 다크 모드를 지원한다. 설정하는 방법 또한 아주 간단하다. 이클립스에서 Window > Preferences를 클릭해 설정 창을 연다. 설정 창에서 General > Appearance에서 Theme에서 Dark를 선택하고 Apply and Close를 누르면 바로 다크모드가 적용 시킬 수 있다. 다크 모드에도 테마가 여러 가지 있으니 여러 가지..
지금까지 Mock이랑 MockMultipartFile을 이용해서 단위 테스트를 했었다. 그 떄까지는 순조로웠던 단위 테스트... 하지만 한 Service의 함수 한에 Util용으로 만들어둔 다른 클래스의 static 메소드를 호출하는 부분이 있었다. 바로 위와 같은 형식의 함수였다. 파일을 업로드하고 가져오고 삭제하고 디렉토리를 정리하는 등의 파일 관련된 공통 기능들이 들어 있는 FIleUtil이 Service 함수 중간 중간에 들어 있는데 특히 위와 같이 uploadFile()과 같이 파일을 업로드 하는 함수가 들어있는 TestService.method()와 같은 것을 테스트 하려고 하니까 FileUtil.uploadFile()이 작동해 계속 이상한 파일이 만들어지는 현상이 발생했다. 게다가 다른 함수..
지금까지는 JPA를 사용하면서 JPA에 Native Query를 사용하거나 jpa method를 조합해서 사용했었다. 아지만 n:m으로 매팽되는 데이터를 사용하게 되었고, 이를 Native Query를 이용해서 해결할 수 있으나 QueryDsl을 써서 해보자는 의견이 나와 QueryDsl을 쓰게 되었다. (아직은 QueryDsl이 뭔지 잘은 모르겠다. jpa의 함수들이 실제 돌아가는게 QueryDsl 기능들을 그 속에 넣어놔서 라고는 하지만...) 여하튼 QueryDsl을 쓰게 되었는데 다른 사람들은 IntelliJ, 나 혼자 Eclipse를 사용하게 되었다. 혼자 Eclipse를 쓰는 나, 다른 사람이 작성해놓은 QueryDsl 코드를 pull 받자마자 Q* 클래스들을 못 찾겠다는 에러를 내면서 실행도..
스프링부트에서 JPA를 사용하다가 모든 리스트를 다 지우고 처음으로 초기화 할 일이 생겼다. 그래서 나는 repository의 deleteAll() 함수를 사용한 후 for문을 통해 처음에 집어넣었던 값들을 똑같이 DB에 집어넣고자 saveAllAndFlush()를 했다. 그렇게 하면 기존에 이것저것 수정된 DB 데이터들이 모두 삭제되고 처음에 집어넣었던 값들을 다시 DB에 넣어서 DB는 이것저것 사용하기 전의 처음 값들을 가지게 될 것이라고 생각한 것이다. 하지만 primary key인 id 값이 이미 존재한다며 'javax.persistence.EntityExistsException' 에러가 발생했고 혹시 deleteAll()을 하고 나서 flush를 안 해서 그런가 하고 repository의 flu..
스프링 부트의 캐싱 기능을 사용하다보니 분산 캐싱 기능도 사용해보고 싶어졌다. 분산 캐싱에 사용할 캐시 데이터 저장 공간은 여러 가지를 사용하는데, 그 중 Redis라는 것을 사용해보려고 한다. Redis란? Redis에 대해 간단하게 설명하면 Redis는 key-value와 같이 Map과 데이터를 저장하고 관리한다. 즉 캐시 데이터와 같이 key 값이 있는 데이터를 저장하기 좋은 것이다. 또한 redis 자체에서 저장된 데이터를 검색 및 제거할 수 있는 등 데이터 관리도 redis를 통해 할 수 있다. https://redis.io/download Redis *Download Stable releases liberally follow the usual major.minor.patch semantic v..
- Total
- Today
- Yesterday
- Java
- 공간데이터
- ssh
- Caching
- 캐싱
- PostgreSQL
- DB
- annotation
- eclipse
- 메시지큐
- rabbitmq
- Spring
- cache
- 자바
- DATABASE
- 데이터베이스
- 역직렬화
- 스프링부트
- postgres
- k8s
- enum
- JPA
- 캐시
- HttpClient
- springboot
- 어노테이션
- 이클립스
- mockito
- MAC
- Intellij
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |