본문 바로가기
728x90

TIL61

알람 기능 구현 방법 이번 학기 캡스톤으로 공유형 가계부 웹 서비스를 구현하는 프로젝트를 진행하고 있다.가계부에 초대받았을 경우, 포인트를 받았을 경우, 댓글이 달렸을 경우 등 서비스 이용자에게 알람을 줄 필요성이 생겨 알람 기능을 구현하고자 한다.그 전에 알람 기능을 구현하는 방법에는 어떤 방법이 있고 어떤 장단점이 있는지 알아보았다. HTTP 통신에서는 클라이언트의 요청이 있을 경우에 서버가 응답을 하는 방식이고 비연결성이라는 특징을 가지고 있기 때문에 서버에서 실시간으로 클라이언트에 변경사항을 알리기 어렵다.이에 대한 해결책, 즉 서버의 Event를 클라이언트로 보내는 방법으로 Polling, Long polling, Web socket, SSE 등이 있다.Polling일정 주기를 가지고 서버에 요청을 보내는 방식HTT.. 2024. 5. 5.
[240219] CI/CD 공부 (2) CD CI/CD 공부 (1) CI https://jinjinjincode.tistory.com/256 [240110] CI/CD 공부 CI/CD란? Continuous Integration/Continuous Deployment(Delivery)의 약자로, 지속적인 통합과 지속적인 제공을 의미 기본 개념 지속적인 통합(Continuous Integration): 자동화된 빌드와 자동화된 테스트를 제공 지속적 jinjinjincode.tistory.com 수동 배포 https://jinjinjincode.tistory.com/259 [240114] AWS, docker로 수동 배포하기 CD를 구축하기 전에 먼저 배포 과정을 익히기 위해서 수동 배포를 해보려고 한다. 지난번에 AWS RDB와 EC2를 만들었고 그.. 2024. 2. 19.
[240128] docker + nginx 무중단배포 구축하기 기존에는 코드가 수정되면 CI/CD를 통해 도커 이미지가 올라가게 되고, EC2 서버에서 해당 이미지를 컨테이너로 실행하여 배포를 진행해야 했다. 이 과정에서는 코드가 수정될 때마다 수정 내용을 반영하기 위해 중간에 서버를 멈추고 다시 시작해줘야 한다는 문제점이 발생한다. 사용자 테스트를 앞두고 서버가 중간에 멈추는 일을 방지하기 위해서 무중단 배포를 구축하고자 했다. Nginx - Nginx는 웹 서버로서의 역할을 하며, 백엔드 서버에 대한 요청을 받아 이를 처리하는 역할을 합니다. 무중단 배포를 위해 새로운 버전의 애플리케이션을 배포할 때 이전 버전과 새로운 버전을 함께 관리할 수 있으며, 요청이 들어오면 새로운 버전이 완전히 배포될 때까지 이전 버전으로 요청을 전달할 수 있습니다. - Reverse.. 2024. 1. 28.
[240118] userDetails null 오류 프로젝트를 진행하던 중에 게시글 전체를 조회하는 api에서도 UserDetailsImpl을 통해 사용자 정보를 받아올 필요성이 생겼다. 하지만 해당 api에서 가져온 userDetails가 null값인 오류가 발생하였다. UserDetailsImpl을 추가하게 된 BoardController API 코드 // Best 게시글 조회 @GetMapping("/best") public String getBestBoards(Model model, @AuthenticationPrincipal UserDetailsImpl userDetails) { BoardBestListGetRes bestBoards = boardService.getBoardBestList(); model.addAttribute("bestBoar.. 2024. 1. 18.
[240117] ec2 서버 실행 ec2 서버에서 ci/cd로 올린 docker 이미지를 pull 받아 제대로 실행되는지 확인해보고자 한다. 그 전에 ec2 서버에 docker와 redis를 설치하였다. 환경변수 설정 일단 첫 번째로 발생한 문제는 환경변수를 설정해줘야 한다는 것이었다. ci/cd에서는 깃허브의 secrets에 환경변수 값을 넣어둔 application-prod.yml 파일을 올려둔 후 prod 환경에서 프로그램을 실행하였다. 하지만 ec2에서 실행하니 다시 환경변수를 넣어주는 방법에 대해 고민하게 되었다. 그래서 해결한 방법은 환경변수를 저장한 [프로젝트명].env 파일을 ec2 서버에 저장하여 docker image를 실행할 때 설정해주는 것이었다. 1. ec2서버의 ./[프로젝트명].env 파일을 생성한다. 2. 해.. 2024. 1. 17.
[240114] AWS, docker로 수동 배포하기 CD를 구축하기 전에 먼저 배포 과정을 익히기 위해서 수동 배포를 해보려고 한다. 지난번에 AWS RDB와 EC2를 만들었고 그 이후 과정부터 진행하고자 한다. gradle 빌드하여 jar 파일 생성 인텔리제이에서 스프링 부트 프로그램을 빌드하여 build > libs > [프로젝트명]-0.0.1-SANPSHOT.jar 파일을 생성한다. 터미널에서 해당 파일이 있는 곳으로 이동 후 java -jar [프로젝트명]-0.0.1-SNAPSHOT.jar으로 프로그램이 잘 실행되는지 확인한다. jar 파일로 이미지를 생성하여 도커허브에 push jar파일이 있는 위치에 Dockerfile을 생성한다. FROM openjdk:17 COPY Sappun-0.0.1-SNAPSHOT.jar app.jar ENTRYPOI.. 2024. 1. 15.