본문 바로가기

노트/F-lab20

가변 인자를 다루기 위한 Functional Interface 활용 들어가기 전에 버즈덤 프로젝트에서는 [RabbitMQ] 설치 및 적용기에 작성한 것처럼 Feed 기능을 구현했다. 이때 템플릿을 지정해놓고 스케줄 정보만 지정된 위치의 문자열에 치환할 수 있도록 아래와 같이 MessageTemplate 클래스에 상수로 템플릿 메시지를 선언해서 사용했다. MessageTemplate public class MessageTemplate { // 치환해야 할 문자열이 한 개일 때 public static final String CREATE_SCHEDULE = "%s님이 {0}로 코칭 일정을 신청했습니다."; // 치환해야 할 문자열이 두 개일 때 public static final String UPDATE_SCHEDULE = "%s님이 {0}에서 {1}로 코칭 일정을 변경했습.. 2023. 7. 1.
[Redis] 설치 및 간단한 테스트 해보기 (Ubuntu 18.04) 들어가기 전에 버즈덤 프로젝트에서는 Spring Security와 JWT를 통해 인증 및 인가 처리를 하는데 이때 Token 저장소로 Redis를 사용하기로 했다. 같이 하시는 팀원 분 파트였는데 하시는 데 어려움을 겪으셔서 내가 연결 정보만 넘겨드리기로 하면서 Redis를 조금이나마 경험할 수 있었다. 사실 설치하고 사용하는 과정까지는 크게 어렵지 않지만 혹시나 나처럼 실수를 겪는 분이 있을까봐 글을 작성하게 됐다. 공식 문서나 블로그 글이나 큰 차이가 없을 것이라고 생각해서 "Redis 설치"를 검색하고 상위에 뜨는 블로그 글들의 설치 방법을 그대로 따라했다가 계속 오류가 나서 생각보다 시간을 쏟게 되었었기 때문이다. 🥲 역시 올타임 교훈은 뭐다? 공식 문서를 참고하자! 설치하기 1. APT 인덱스에.. 2023. 6. 28.
동시성 제어와 DB 설계의 고민 들어가기 전에 버즈덤 프로젝트는 F-lab의 코칭 시스템 이용하면서 일정이나 피드백 관리가 있으면 좋을 것 같다는 마음에서 시작하게 됐다. 메인 기능은 코치가 코칭 가능한 시간을 등록하는 것과 멘티가 코칭을 신청하는 것인데 기본 내용은 다음과 같다. 코치 한 명에 여러 명의 멘티가 매칭될 수 있다. 코치는 코칭 가능한 시간을 등록한다. 멘티들은 코치의 일정을 조회해 그중 하나를 선택해 코칭을 신청한다. 그중 내가 맡은 것은 멘티가 코칭을 신청하는 기능이었는데 코치 한 명에 여러 명의 멘티가 있다 보니 동시성 문제가 발생할 것이라고 보고 동시성 제어에 대한 경험을 해볼 수 있을 것이라고 생각했다. 그래서 처음에는 수강 신청처럼 오픈되는 시간을 정해두고 멘티가 동시에 선착순으로 코칭 일정을 선점하는 방식으로.. 2023. 6. 23.
Github Actions: CI/CD 구축 (feat. Docker) 들어가기 전에 Github Actions와 shell script로 CI/CD를 구축했는데 이번에는 Docker hub에 이미지를 빌드하고 원격 서버에서 이 이미지를 pull 받아서 컨테이너로 실행하도록 했다. Github Actions: CI/CD 구축 (feat.shell script) - 준비편 Github Actions: CI/CD 구축 (feat.shell script) - 실전편 그래서 밑작업들은 모두 이전 포스팅에 설명해놨기 때문에 설정 안 한 부분이 있다면 위의 링크를 참고하면 좋겠다. 참고로 이전 작업들은 Docker를 도입하기 전에 직접 jar 파일을 배포해서 실행하는 shell script도 작성도 해보고 리눅스 명령어도 최대한 경험할 수 있는 시간을 가지기 위함이었다. Docker를.. 2023. 6. 21.
RabbitMQ를 활용한 메시지 처리 방식 구현: 설치부터 적용까지 들어가기 전에 이번 F-lab 프로젝트에서 Feed 기능을 구현하게 됐다. 각각의 이벤트가 발생했을 때 피드 메시지를 생성하고 전달해서 Feed 테이블에 저장했어야 하는데 직접 저장하는 메소드를 호출하느냐, 아니면 이벤트를 처리하기 위한 별도의 장치를 사용하느냐를 두고 생각하다가 각 서비스 간의 의존도와 결합도를 낮추기 위해서 후자를 선택하기로 했다. 그 다음으로 고민했던 것은 Spring의 @EventListener를 사용하느냐, Message broker를 사용하느냐였다. Spring의 @EventListener로도 충분히 하고자 하는 기능 구현을 해낼 수 있었지만 굳이 Message broker를 사용한 이유는 scale out에 대한 대비였다. 지금 당장은 싱글 서버이지만 증설을 목표로 두고 하고.. 2023. 6. 17.
Github Actions: CI/CD 구축 (feat.shell script) - 실전편 들어가기 전에 지난 준비편을 통해 모든 준비가 끝났다면 이번 글에서 CI/CD 구축 작업을 직접 해보도록 하자. 참고로 이 글은 Github Actions 내의 모든 기능이나 개념에 대한 설명보다는 집중에 구현한 글이다. 만약 기초 개념에 대한 공부가 필요하다면 Microsoft에서 제공하는 Github Actions로 개발 주기 자동화라는 발표 영상을 추천한다. 목차 🌊 실전 1. CI - workflow 생성 2. CD - workflow 생성 - ssh-action 활용하여 서버 접속하기 - scp-action 활용하여 빌드된 아티팩트 복사하기 시작하기 1️⃣ CI workflow 생성 /github/workflows 하위에 ci.yml 파일을 생성하고 내용을 커스텀한다. name: CI on: p.. 2023. 6. 4.