웹 애플리케이션을 개발하다보면 클라이언트의 요청 없이도 서버에서 특정한 데이터를 클라이언트로 보내주어야 하는 상황이 생긴다. 예를 들어, 댓글 알림이나 물건 판매 알림과 같이 실시간 알림 기능을 위해서는 서버에서 해당 이벤트가 발생하는 즉시 클라이언트로 알림을 보내주어야 한다. 개인 프로젝트에서도 해당 기능이 필요한 상황이 생겼다. 어드민에서 사용자가 판매 요청을 진행한 물건을 검토 후 판매 허가를 진행하면, 해당 사용자는 본인의 물건이 판매 허가가 떨어졌다는 실시간 알림을 받아야 하는 기능이 필요했다. 일반적인 HTTP 기반 통신 방식으로는 이 기능을 구현하기에는 어려운 부분이 있다. 서버에서 해당 알림을 보내기 위해서는 클라이언트의 요청이 꼭 필요하기 때문이다. 이렇게 HTTP 기반으로 실시간 통신이..
전체 글
일반적으로 네트워크 통신은 HTTP를 사용하여 클라이언트에서 요청을 보내면 서버에서 해당 요청에 대한 응답을 전달하는 방식으로 이루어진다. 여기서 중요한 점은, 클라이언트의 요청이 있기 전까지는 서버는 데이터를 전송할 수 없다는 것이다. 하지만, 기술이 점점 발전하고 다양한 서비스가 생김에 따라 실시간 네트워크 통신이 필요한 상황이 생기게 되었다. 예를 들어, 채팅 서비스 같이 실시간으로 서버로부터 채팅 데이터를 받아와야 하는 상황에서는 이런 실시간 통신이 매우 중요한 요소이다. 이렇게 실시간 통신의 필요성이 증가함에 따라 이를 위한 여러가지 통신 방식이 등장하게 되었다. 이 글에서는 이런 실시간으로 통신할 수 있는 여러가지 방식을 알아보도록 할 것이다. Polling & Long Polling실시간성..
Jenkins로 CI/CD를 구현하면서 보통 GitHub과 연동하여 pipeline과 Webhook을 설정하게 된다. 이 과정에서 GitHub 인증 절차가 필요한 경우라면, Jenkins에서 별도의 credential 설정이 필요하다. 이 글에서는 해당 인증 절차를 어떻게 진행하는지 알아보도록 할 것이다. GitHub Access Token 생성먼저, GitHub에서 access token을 생성해야 한다. GitHub에 로그인한 후, 다음 과정을 통해 token을 생성하는 화면으로 이동하자. 우측 상단의 사용자 프로필 클릭 -> "Settings" 클릭 -> "Developer settings" 클릭 -> "Personal access tokens" 선택 후 Tokens (classic) 클릭 다음으..
[CI/CD] Jenkins를 활용하여 CI/CD 구축하기 1 - Jenkins 설치 및 CI 구축[CI/CD] CI/CD란 무엇인가?개요기본적으로 서비스를 배포하기까지는 개발 외에도 테스트, 빌드, 배포 등 여러 과정을 거치게 된다. 이 과정이 일회성으로 이루어지거나 단순히 몇 진행된다면, 이 과davidy87.tistory.com 이전 글에서 Jenkins에 대해 간단히 알아보고 이를 활용해 개인 프로젝트를 위한 CI를 구축하는 과정을 진행하였다. 이번 글에서는 이어서 CD를 구축하는 방법을 알아보도록 하겠다. SSH Plugin 설치CI 과정이 성공적으로 완료되면 프로젝트 빌드 결과물(jar 파일)을 프로젝트가 운영될 EC2 서버에 실행해야 한다. 이를 위해서는 Jenkins 빌드 과정에서 SSH..
[CI/CD] CI/CD란 무엇인가?개요기본적으로 서비스를 배포하기까지는 개발 외에도 테스트, 빌드, 배포 등 여러 과정을 거치게 된다. 이 과정이 일회성으로 이루어지거나 단순히 몇 진행된다면, 이 과정을 그대로 진행해도davidy87.tistory.com 이전 글에서 CI/CD가 무엇인지 알아보았다. 이번 글에서는 개인 프로젝트를 CI 툴 중 하나인 Jenkins를 활용해 CI/CD를 구축하는 과정을 정리하려고 한다. Jenkins 설치먼저 Jenkins를 사용하기 위해 설치를 진행해야 하는데, 설치 방법에는 두 가지 선택지가 있다. 1. 직접 설치Jenkins를 실행하고자 하는 machine에 직접 설치하는 방법이 있다. 하지만, Linux를 기준으로 Jenkins를 직접 설치할 경우, 위와 같이 ..
개요기본적으로 서비스를 배포하기까지는 개발 외에도 테스트, 빌드, 배포 등 여러 과정을 거치게 된다. 이 과정이 일회성으로 이루어지거나 단순히 몇 진행된다면, 이 과정을 그대로 진행해도 무방할 것이다. 하지만, 서비스를 운영하는 동안 생길 수 있는 오류를 수정하거나 새로운 기능을 추가해야 하는 상황은 지속적으로 일어나게 되며, 이럴 때 마다 해당 과정을 계속해서 반복하는 것은 개발자들에게 상당한 피로감을 주고 개발 생산성을 떨어뜨릴 것이다. CI/CD는 빌드 및 배포 과정을 자동화하여 이 과정에서 생길 수 있는 문제를 줄일 수 있다. 이로써, 개발자들은 개발에 더 시간을 투자할 수 있고, 오로지 개발에만 집중할 수 있게 된다. CI란?CI/CD에서 CI는 "Continuous Integration"의 ..