프로젝트에 대한 후기 처음에 요구사항을 작성할 때는 시스템에 대한 이해가 부족한 입장에서 적는 것이 미숙했던 것 같다. 시스템을 잘 모른다고 생각하고 요구사항을 작성했다면 더 좋았을 것이라는 생각이 든다. 이를 최대한 보완하여 더욱 상세하게 작성하려 노력하고 있다. 그런데 여기서 한 가지 고민이 생겼는데, 사실 요구사항에 모든 것을 상세하게 기술하지는 않았다. 일부로 이 시스템에서 꼭 알아야 하는 중요한 부분은 추상적으로 남겨뒀다. 그 과정에서 풀어가는 과정을 보고 싶었는데 이것을 어디까지 적어야 할지 경계를 정하는 일은 계속 어려운 부분으로 남을 것 같다. 더보기 사실 프로젝트마다 후기를 요청하고 싶었지만 부담을 느끼실까 봐 전체 프로젝트의 중간에서 후반정도의 진도일 때 후기를 받았다. 번외 가끔 흥미..
Gitub Actions를 통해 PR이 올라오면 자동으로 테스트를 돌려주는 기능을 적용하면서 삽질을 했던 것을 풀어보려고 한다. 아직 완벽하게 해결하지 못한 문제가 있어서 밤이 깊어가는데도 마음 한구석에 찝찝하고 아쉬움이 남았다. 이 과정에서 배운 것도 많고, 앞으로 더 개선할 부분에 대한 고민도 많이 하게 되었다..🤣 삽질을 해야 얻는 게 많아, 너무 잘 풀리면 배우는 게 없어 ~ (라고 세뇌 중....) 12/06 결국 해결완료🔥🔥 workflows에서 Actions이 작동이 안 한다!? name: Java CI with Gradle on: pull_request: branches: [ "main" ] permissions: contents: read jobs: test: runs-on: ubuntu..
온보딩이란? 출처: team.modusign 온보딩이란 원래 '배에 탄다' 또는 '승선한다'는 의미의 단어에서 유래했다. 이 개념은 조직 내에서 신규 구성원이 조직의 문화, 직무에 잘 적응할 수 있도록 돕는 과정을 의미한다. 즉, 신규 입사자가 회사에 수월하게 적응할 수 있도록 업무에 필요한 지식, 기술, 문화 등을 안내하고 교육하는 과정을 말한다. 온보딩 도입 첫 번째 온보딩 우리 회사에는 처음에 온보딩 과정이 마련되어 있지 않았다. 시간이 지나고 경험이 쌓이면서, 새로운 구성원들이 들어오는 것을 보고 이들이 보다 원활하게 적응할 수 있도록 도울 필요성을 느꼈다. 나의 아쉬웠던 경험을 바탕으로, 새롭게 온보딩 프로세스를 도입하려고 고안했다. 처음에는 노션을 사용하여 사진과 같이 우리 서비스를 설명하고,..
이해를 돕기 위한 기존 시스템 간단 설명 기존시스템은 EC2에 MongoDB를 구축해서 사용하고 있었고, 데이터 보호와 복구를 위해, crontab을 사용해서 일정 시간마다 MongoDump를 하고 S3로 옮기고 삭제하는 방식을 사용하고 있었던 것 같다. 문제 상황 분석 및 예상 갑작스럽게 MongoDB 서비스가 다운되는 상황이 생겼다. 확인해 보니 EC2 인스턴스 용량 부족으로 다운이 됐었다. 그래서 EC2 인스턴스 용량을 확인해 보니 20GB였고 데이터를 확인해 보면 아직 충분히 여유가 있는 용량이었다. 명령어를 통해 어떤 폴더의 용량이 가장 큰지 파보니 백업 dump가 매우 크게 잡아먹고 있었다. 백업 스크립트들을 보며 분석해 봤는데 백업파일이 1시간마다 실행되고 S3로 옮기고 삭제하는 스크립트는 ..
SecurityContextHolder에서 유저 정보를 가져오며 테스트 중 겪었던 작은 문제와 그에 대한 대처를 이야기하고자 한다. 같은 경험을 했거나 더 좋은 경험이 있다면 댓글로 ✍️ 🙏 SecurityContextHolder에서 유저 정보를 효율적으로 가져오기 첫 번째 문제 상황 진행하던 프로젝트에서 Spring Security의 `SecurityContextHolder`를 사용해 로그인한 유저의 정보를 가져와야 하는 상황이 생겼다. 흔히 많은 예제에서 username 필드로 email을 사용해서 우선 처음에는 email로 세팅했다. 여기서 작은 문제가 생겼다. user와 연결된 다른 많은 테이블들이 있었고, 이 테이블들과 join을 할 때마다 email로 먼저 유저 정보를 조회하고, 그 후 use..
Java + SpringBoot를 사용하는 프로젝트를 한다면 롬복을 한 번쯤은 써봤을 것이고, 없으면 안 된다는 사람도 있을 것이다. 근데 "롬복을 제대로 알고 있나?"라는 의문이 들어서 정리해보려고 한다. Lombok 🌶️ 공식문서를 보면 롬복은 코드 작성을 편하고 훨씬 간결하게 도와주는 도구라고 생각하면 된다. https://projectlombok.org/ Project Lombok(롬복)은 자바 라이브러리로, 자동으로 에디터와 빌드 도구에 연결됩니다. 이 라이브러리를 사용하면 자바 코드 작성을 훨씬 간결하게 할 수 있습니다. 롬복을 사용하면 귀찮은 getter, setter, equals, hashCode와 같은 메서드를 수동으로 작성할 필요가 없습니다. 단순한 어노테이션 하나로 클래스에 완전한 ..
S3 버킷 만들기 CloudFront 배포 생성 & Route 53 이미지를 보면 원본 경로가 있는데 s3 내부에 원하는 경로를 입력하면 된다. 예를 들어 s3의 image 폴더에 test.png를 접근하고 싶다면 원본경로에 `/image/*`을 적고 기본루트에 /test.png 입력하면 image 폴더가 루트 경로가 돼서 test.png로 접근 가능하다. 아무것도 입력하지 않으면 버킷의 root로 바로 접근할 수 있어서 아무것도 적지 않았다. 더보기 이렇게 웹 사이트 엔드포인트를 사용하라고 할 수도 있는 데 사용을 누르면 이렇게 위에 도메인과 다르게 website가 붙은 도메인이 나오게 된다. 이걸 사용하면 원본 액세스 설정이 없어져서 저걸 사용하며 안 된다. 굳이 보안이 필요하지 않다면 비활성화해도 ..
CDN이란? - https://aws.amazon.com/ko/what-is/cdn/ AWS에서 설명하고 있는 CDN과 다르게 기존의 시스템은 CDN까지는 아니고 이미지서버(?) 정도 될 것 같다. 하지만 CDN으로 부르겠다 😅 기존 시스템과 요구사항 우선 CDN 구축 필수 요구사항은 HTTPS와 확장가능성이 필요했다. 그리고 필수는 아니었지만 초반에는 무료로 운영하면 좋겠다는 요구사항도 있었다. 기존의 CDN은 express의 static 미들웨어를 사용하여 아주 간단하게 정적 파일을 제공하고 있었다. 그리고 무료로 HTTPS 서버를 구축하기 위해 내도메인.한국과 ZeroSSL을 이용했다. const https = require('https'); const fs = require('fs'); const..