[SpringBoot] Sentry On-premise 구축기
·
spring
Sentry는 on premise로 직접 sentry를 띄우면 무료로 팀 계정을 사용할 수 있게 해주는데 이 구축기를 공유해보려한다.도입 배경뽀각 서비스를 운영하면서 기존 에러 추적을 위해서 Sentry를 개발 계정으로 한 명이서 관리를 하고 있었다.무료 계정이다보니 팀원 모두가 사용할 수 없어 불편함이 있어 이를 on premise로 옮기기로 결정! 최소 권장 사양4 CPU Cores16 GB RAM20 GB Free Disk SpaceAWS에서 제공하는 프리티어 사양으로는 돌릴 수 없기 때문에 리눅스 컴에 직접 돌리기로 결정하였다.설치 방법git clone https://github.com/getsentry/self-hosted.gitcd self-hostedsudo ./install.shsudo ..
Java reflection을 통해 RestDocs 생성 테스트 코드 작성 시간 1/2로 줄이기
·
spring
취준 관리 서비스 뽀각을 개발하면서 Spring REST Docs를 도입해 API 문서 생성을 하고 있었다. REST Docs의 장단점은 명확하다.장점 : 프로덕션 코드에 어노테이션 등이 침투하지 않는다.단점 : 테스트 코드가 성공해야만 문서 생성이 가능하다. 테스트 코드도 강제로 짜고 좋지 뭐.. 하며 호기롭게 시작한 REST Docs 적용은 테스트 코드 지옥에 우리를 빠트렸다..문제점 뽀각에는 노션의 페이지처럼 마크다운 문법으로 글을 작성할 수 있는 카드라는 아이템이 있는데 이를 단건조회하는 테스트 코드이다.API 하나에 미친 듯한 코드 줄의 양이 보이는가..? 이는 JSON 상하차를 해야하는 서비스 초반 우리 개발 속도에 발목을 잡았다. 팩토리 클래스 생성이를 REST Docs 문법에 맞는 테스트 ..
[스프링] service 인터페이스 도입과 접근제한자
·
spring
고민의 시작백기선님의 이펙티브 자바 완벽 공략의 “아이템 15. 클래스와 멤버의 접근 권한을 최소화하라”에는😄 : “public, protected 접근 제한자를 가지는 API는 하위호환성을 지키고 싶다면 영원히 관리해야하는 코드가 된다” 라는 말이 나옵니다. 응? 나는 스프링에서 지금까지 모든 클래스를 거의 public으로 박아놨는데…. 라는 생각이 들었습니다.여기서 하위호환성을 지킨다는 것은 버전이 올라갈 수록 이전 jar 파일로 배포해두었던 public으로 노출시킨 나의 코드를 누가 언제 어디서 쓰고 있는지 모르기 때문에 다음버전에서도 쉽게 바꾸지 못한다는 것을 의미합니다. 만약 바꾼다면 클라이언트에서 해당 코드에 해당하는 부분을 모두 바꾸어야하는 문제가 생깁니다. 그리고 말하시길😄 : “정답은..
[spring security] 왜 500번 에러도 401(Unauthorized)에러가 될까?
·
spring
문제상황spring security에서 filterChain을 설정하면서 "/member/signUp" url에 대한 request는 permitAll()을 해주고 싶었다. 이 과정에서 분명 permitAll()를 해주었지만 401 error가 발생하였고 이를 해결하는 과정을 포스팅한다. 본문String[] allowUrls = {"/", "/swagger-ui/**", "/member/signUp"};@Beanpublic SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .csrf(AbstractHttpConfigurer::disable) .cors(Abstra..
이미지 저장/조회 서버 만들기(3) - AWS Presigned URL 이미지 업로드
·
spring
https://preparingfor.tistory.com/7 [일주일 프로젝트] 이미지 저장/조회 서버 만들기(2) - 이미지 파일 어떻게 받아오지?https://preparingfor.tistory.com/6 [일주일 프로젝트] 이미지 저장/조회 서버 만들기(1) - 저장 어디에..? 공지사항 기능을 만들던 중 이미지를 저장해야하는 상황이 생겼습니다. 그 김에 첫번째 일주일 프preparingfor.tistory.com저번 글에 이어서 서버를 거쳐 이미지를 aws s3에 저장하는 방식이 아닌 presigned-url을 통해 프론트에서 직접 s3 업로드 하는 방식을 알아보겠습니다. Presigned-URLPresigned-url은 AWS의 S3(Simple Storage Serivce)가 지원하는 기능..
이미지 저장/조회 서버 만들기(2) - 이미지 파일 어떻게 받아오지?
·
spring
https://preparingfor.tistory.com/6 [일주일 프로젝트] 이미지 저장/조회 서버 만들기(1) - 저장 어디에..? 공지사항 기능을 만들던 중 이미지를 저장해야하는 상황이 생겼습니다. 그 김에 첫번째 일주일 프로젝트로 이미지 저장/조회 api를 만들어보려고합니다. 일단 이미지 처리 api를 만들려고하니 받 preparingfor.tistory.com 저번 글에 이어서 이제는 구상하였던 이미지 저장/조회 서버를 코드로 옮겨보려고 합니다. 이미지를 Controller로 받아오기 위해서 이미지는 무슨 데이터 타입으로 받아와야하는지 알아봐야했습니다. 찾아보니 Spring에서는 MultipartFile 타입으로 이미지를 받아온다고 합니다. MultipartFile type Multipart..
이미지 저장/조회 서버 만들기(1) - 저장 어디에..?
·
spring
공지사항 기능을 만들던 중 이미지를 저장해야하는 상황이 생겼습니다. 그 김에 첫번째 일주일 프로젝트로 이미지 저장/조회 api를 만들어보려고합니다. 일단 이미지 처리 api를 만들려고하니 받아온 이미지를 어디에 저장해야할지 고민이 되었습니다. 고민 1. 이미지 저장은 어디서 해야할까? 기존에 data들은 모두 database에 저장을 하였으니 database에 저장을 그래도 하면 되는걸까? 아무래도 이건 아닌 것 같았습니다. 서버 배포할 때 database의 용량의 크기가 이미지를 저장하는 용도는 아닐것이라 생각을 했거든요. 그래서 이미지는 보통 어디에 저장하는지 구글링을 해보았습니다. 크게 저장 장소가 3가지 있었습니다. 1. database 2. 서버 컴퓨터의 disk 3. 외부 storage 하니씩..
SpringBoot + JPA + postgreSQL 프로젝트를 docker를 이용해 fly.io로 배포해보자 - 1부
·
spring
내가 만든 프로젝트를 지속적으로 사용자가 쓸수 있게 배포하고 싶어 가격이 싼 fly.io로 db를 배포해보기로 했다. 원래 spring-boot 프로젝트에서 mysql을 사용했기 때문에 mysql로 만들어보려했지만 자료 부족과 처음 배포해보는 것 때문에 많이 헤맸었다. fly.io는 postgresql을 밀고 있어 postgresql 앱을 만드는것이 타 db보다 간편하고 설명이 더 잘되어있다. 또한 구글에 정보가 그나마 많아 postgresql로 DB를 변경하였다. 먼저 fly 명령어로 postgres 앱을 만들어보자 PostgreSQL app을 만들기위해, flyctl postgres create 을 해주고 아래와 같이 앱 이름, 지역, cpu 개수 RAM 설정을 골라준다. fly postgres cr..