만쥬의 개발일기
article thumbnail
[CI/CD] - 무중단 배포 withCI/CD 3: github action을 활용한 CD 편
♾️DevOps/♾️CI & CD 2024. 2. 26. 16:06

최종 아키텍쳐 이제 CI부분까지는 완료됐으니, 배포 부분 yml만 작성해주면 끝이다. 먼저 빌드 부분 yml 파일을 작성하기 전에 러너를 선택해야되는데, 깃허브 액션의 기본 러너를 사용하면 깃허브 액션을 실시할 때마다 러너의 IP가 바뀌기 때문에 서버의 인바운드 규칙을 설정하기가 상당히 애매해진다. 따라서 내 서버를 러너로서 사용하는 self-hosted runner를 선택했다. Self-hosted 러너 설정 actions ➡️ runners ➡️ new self-hosted runner를 선택해준다. 배포 서버의 운영체제에 맞게 선택해주고, 하단에 있는 스크립트들을 배포서버의 배포 폴더에서 실행시켜 주면 준비 끝! Self-hosted 러너 테스트 name: nsfServer Github Action..

article thumbnail
[CI/CD] - 무중단 배포 with CI/CD 2: github action을 활용한 CI 편
♾️DevOps/♾️CI & CD 2024. 2. 26. 15:57

지난번 젠킨스에 이어, 이번엔 github action을 활용해 CI/CD를 구축해보자. 먼저 CI (Continuous Integration) 환경을 구축하는 법을 알아보자. 구축하고자 하는 최종 아키텍쳐는 다음과 같다. CI/CD 학습용이기 때문에 EC2 하나로 구현을 시도하였다. 그러나 추후 여러 문제로 인해 green group을 위한 ec2 서버를 추가하였다. (무중단 배포 불가능한 이슈) github action 시작하기 github 프로젝트 ➡️ actions에서 workflow를 하나 작성해준다. 기본 workflow를 다음과 같이 수정해준다. 필자는 프로젝트에서 mysql 설정을 [application-mysql.properties](http://application-mysql.prope..

article thumbnail
[CI/CD] - 무중단 배포 with CI/CD 1: nginx + spring 로드 밸런싱 편
♾️DevOps/♾️CI & CD 2024. 2. 26. 15:49

구축하고자 하는 최종 아키텍쳐는 다음과 같다. 3편까지 모두 따라하고 나면 다음과 같은 아키텍쳐를 구축하게 된다. (단, 추후 EC2가 한 개 더 필요해진다.) 먼저 이번장에서는 스프링으로 구축한 서버를 nginx로 로드밸런싱 하는 부분을 다뤄볼 것이다. 이번 장에서 목표로 하는 아키텍쳐는 다음과 같다. 위 그림이 현재 목표인 아키텍쳐이다. (물론 최선은 각각을 하나의 EC2에 두는 것이다.) Docker를 사용해 한 컴퓨팅 자원에서 웹서버와 WAS를 분리한다. 각각의 이미지가 분리되어있기에 인프라 구축에 용이하다. Nginx를 사용한 로드 밸런싱 서버로 들어오는 요청을 8081,8082에 띄워진 두 WAS로 나누어 부하를 분산시킬 수 있다. 무중단 배포 배포 시 하나의 서버에 배포를 진행한다면 반드시 ..

article thumbnail
[Network] - SSL 공인 인증서와 SSL 사설 인증서의 차이, SSL 인증서 확인
🖥️CS/🛜네트워크 2024. 2. 26. 09:48

공인 SSL 인증서 공인 SSL 인증서는 인증 기관(CA)에서 발급하는 인증서입니다. 일반적으로 인터넷에서 접근하는 사이트들은 공인인증서가 적용되어 있다고 생각하시면 됩니다. 사용자 PC에 따로 인증서를 설치하지 않더라도 문제없이 https가 적용된 웹사이트를 사용할 수 있습니다. 사설 SSL 인증서 사설 SSL 인증서는 공인 인증 기관이 아닌 특정 조직에서 발급합니다. 예를 들어 A라는 회사가 자사가 인증한 SSL 인증서를 발급할 수 있습니다. 이런 인증서는 인터넷으로 서비스되는 웹사이트가 아니라 기업 내에서 직원들이 접속하는 웹사이트에서 주로 사용합니다. 내부망에서 이루어지는 통신이라 할지라도 보안 관련 인증심사에서 https 적용 여부를 확인하기 때문에 심사를 준비하는 기업은 적용하는 경우가 많습니..

article thumbnail
[Network] - http와 https , SSL 개념 총 정리
🖥️CS/🛜네트워크 2024. 2. 23. 15:05

HTTP(Htpertext Transfer Protocol) : 클라이언트와 서버 간 통신을 위한 HTML을 전송하기 위한 통신 규칙 또는 프로토콜. 통신규약: 데이터의 첫번째 줄에는 '목차' 내용을 쓰고, 두번째 줄부터 '실제 내용'를 써서 주고 받겠다는 규칙 같은 것. HTTP는 OSI 7계층의 애플리케이션 계층 프로토콜이다. 브라우저와 웹서버는 HTTP 프로토콜을 통해 데이터를 텍스트로 주고 받는다. 서버는 200,400,404 등의 응답을 전송하고, 일반적으로 사용자에게 보이지 않는다. HTTP는 Stateless이다. Stateless란 말 그대로 state(상태)를 저장하지 않는다는 것. 각각의 요청/응답은 독립적인 요청/응답이다. 여러 요청과 응답의 진행과정/데이터가 필요할때는 쿠키나 세션 ..

article thumbnail
[Network] - OSI 7계층
🖥️CS/🛜네트워크 2024. 2. 23. 15:00

OSI(Open Systems Interconnection) 7 계층이란? OSI 7 계층은 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 개념적 프레임워크 말한다. OSI 7 계층 모델을 만든 이유는? 네트워크 구조상 정말 많은 방식으로 End to End 연결이 가능하다. 행성급의 전기 신호가 있다면 미국 - 한국을 안테나 - 안테나로 바로 연결할 수도 있는데, 이런 경우에는 허브, 스위치 등의 네트워크 장비들은 하나도 필요 없다. 그러나 그런 예외는 우주에서나 존재하므로, 대부분은 공유기에 모뎀을 써서 기지국에 연결한다. 이런 정형화된 경우를 고려해 고안된 것이 OSI 7계층이다. OSI 7계층은 다음의 장점들을 가진다. 복잡한 시스템에 대한 이해 공유 계층을 나눈 이유는 통신이 일어나는 과정을..

article thumbnail
[Network] - 네트워크의 구조와 개념
🖥️CS/🛜네트워크 2024. 2. 23. 14:54

네트워크는 크게 호스트와 노드로 이루어진다. End-to-End 통신에서 각 끝단을 호스트라고 하며, 그 사이 거쳐가는 모든 Path들을 노드라고 부르게 되는데, 네트워크적 관점에서 Node와 Path를 몇 번 거치느냐에 따라 속도에 차이가 생겨 전달시간과 망 점유율을 최소화하는 알고리즘이 중요하다. (BFS,Dijkstra 등) 호스트(Host) 인터넷 연결은 End to End 패킷 전달을 목표로하는데, 각 End는 개인의 단말 혹은 서버이고, 이를 Host 라고 부른다. 패킷의 입장에서는 발송자를 Source, 수신자를 Destination이라고 부른다. Host 이외의 Node End to End 통신을 단일 매체로 구현하는 것은 불가능에 가깝다. 패킷을 전달하기 위해선 패킷들을 잠시 저장하고 방..

article thumbnail
[Network] - 패킷(Packet)의 정의와 구조
🖥️CS/🛜네트워크 2024. 2. 23. 14:53

패킷이란? Package + Bucket 패킷은 pack과 bucket을 합친 말로, 우체국에서는 화물을 적당한 크기로 나눠 행선지를 표시하는 꼬리표를 붙이는데, 이러한 방식을 데이터 통신에 접목한 것이다. 쉽게 말해 컴퓨터 간 데이터를 주고받을 때 패킷은 네트워크를 통해 전송되는 일종의 데이터 조각이라고 생각할 수 있다. 그리고 컴퓨터 네트워크에서 이는 정해진 규칙으로서 작동한다. 데이터를 패킷으로 쪼개서 보내는 이유: 큰 데이터를 한번에 보내면, 많은 대역폭을 차지해 흐름을 원활하게 하지 못한다. 따라서 트래픽이 많아지게 된다. 큰 데이터를 보내는 방식 큰 데이터를 보낼때, 이는 작은 패킷들로 분할된다. 그리고 작은 패킷들로 분할된 데이터는 전달 시에 번호를 붙여서 전달이 된다. 수신자는 이 번호를 ..