[AWS S3] S3 데이터 계정간 이동 및 복원하기
·
개발 ━━━━━/Dev
프로젝트 서버를 이사하면서 다른건 다 옮겼는데 S3 를 팀원의 계정으로 사용하고 있어서 그것마저 옮기려고 한다. 준비1. 기존 S3 데이터가 존재하는 AWS 계정2. 타겟 AWS 계정3. 타겟 AWS 계정의 EC2 를 준비해준다. 과정1. 기존 AWS 계정 S3 Bucket 에 Policy 등록{ "Version": "2012-10-17", "Statement": [ { "Sid": "DelegateS3Access", "Action": [ "s3:GetObject", "s3:ListBucket", "s3:GetObjectTagging" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::{기존 버킷 이름}", "arn:a..
[Nginx] Blue / Green 배포 전략으로 Spring 프로젝트 EC2 에 무중단 배포하기
·
개발 ━━━━━/Dev
무중단 배포 현재 연습하고 있는 프로젝트는 사진과 같은 단순 배포 방식으로 프로젝트가 배포 되고 있어 업데이트 사항이 있을 때 서버가 항상 종료가 되었다가 새로 시작하는 방식으로 운영되고 있었다. 종료가 된 상태에선 서비스 이용을 못할 뿐더러 새롭게 배포된 프로젝트에 문제가 있을시 수습되기 전까진 서비스 이용을 또 못하고 있는 상황이 연출되어 무중단 배포를 적용시켜보기로 했다. 무중단 배포 전략 1. Rolling Update (롤링 배포) 롤링 배포는 사용 중인 인스턴스 내에서 새 버전의 프로젝트를 점진적으로 교체하는 방식 서비스 중인 인스턴스 하나를 로드밸런서에 라우팅하지 않도록 한 뒤, 새 버전을 적용하여 라우팅하도록 한다. 새 버전을 배포할 때 인스턴스가 감소를 하므로 트래픽이 몰려 과부하가 발생..
[Docker] Docker Volume 을 이용한 MySQL 데이터 백업
·
개발 ━━━━━/Dev
Ubuntu 에서 Docker 로 띄워놓은 MySQL 컨테이너의 데이터를 Docker Volume 을 만들어 관리하려 한다. docker inspect mysql_컨테이너_ID 로 해당 컨테이너에 마운트 되어 있는 볼륨을 찾는다. "Mounts" 부분에서 찾을 수 있다. docker volume create 새로운_volume_이름 으로 새로운 볼륨을 생성해주고 docker run --rm -v 백업할_volume_이름:/from -v 새로_만든_volume_이름:/to alpine ash -c "cd /from && cp -av . /to" • 백업할_볼륨_이름을 /from 경로에 마운트합니다. • 새로_만든_볼륨_이름을 /to 경로에 마운트합니다. • alpine 컨테이너를 시작하고, /from에서 ..
[Docker] MySQL 컨테이너를 이미지화 하여 Docker Hub 에 push 하기
·
개발 ━━━━━/Dev
현재 EC2 에서 돌아가고 있는 MySQL DB 를 Docker Hub 에 commit & push 를 하려고 한다. 터미널에서 // docker commit -m "커밋메세지" -a "docker hub 계정이메일" 컨테이너ID 계정명/이미지이름:태그 docker commit -m "v1.0.0" -a "***@gmail.com" 02dcc ***/mysql-***:1.0.0 명령어로 현재 실행 중인 컨테이너를 이미지화 한다. 그럼 이렇게 1.0.0 태그가 달려있는 이미지가 생성이 되고 docker login 이미지를 올릴 docker hub 에 로그인을 해준 후 // docker push 이미지이름:태그 docker push ***/mysql-***:1.0.0 push 를 해주면 docker hub ..
Github Actions 를 이용하여 AWS EC2 에 SpringBoot 애플리케이션 CI/CD 구축
·
개발 ━━━━━/Dev
(이전 글) Github Actions https://gukjan9.tistory.com/71 Github Actions Github Actions Github 에서 제공하는 CI / CD 툴로 코드 저장소 (Repository) 에 이벤트 (Event) 가 발생하였을 때 구성해둔 Workflow 가 실행되면서 프로젝트를 빌드 및 테스트 후 배포까지 진행되는 서비스이 gukjan9.tistory.com Github Secrets 구성 Github Actions 를 사용하여 EC2 에 프로젝트를 배포하기에 앞서 EC2 에 접속하기 위해 필요한 접속 ip 와 pem key 등이 있는데 이를 직접적으로 코드에 노출을 하면 보안상 위험이 있으므로 Repository 에 Settings > Secrets and ..
Github Actions
·
개발 ━━━━━/Dev
Github Actions Github 에서 제공하는 CI / CD 툴로 코드 저장소 (Repository) 에 이벤트 (Event) 가 발생하였을 때 구성해둔 Workflow 가 실행되면서 프로젝트를 빌드 및 테스트 후 배포까지 진행되는 서비스이다. CI / CD 란? CI (Continuous Integration) : 지속적인 통합이라는 뜻으로 Application 의 새로운 코드 변경 사항을 정기적으로 Build 및 Test 하여 공유 Repository 에 통합되는 것을 의미한다. CD (Continuous Delivery / Deploy) : 지속적인 배포라는 뜻으로 CI 를 넘어 Production 레벨까지 자동으로 배포하는 것을 의미한다. 구성 요소 워크플로우 (Workflow) 하나 이상..
WebSocket 웹소켓
·
개발 ━━━━━/Dev
WebSocket 이란? 서버와 클라이언트 간에 Connection 을 계속 유지하면서 양방향 통신 (Duplex) 을 하여 클라이언트의 요청이 없어도 데이터를 전송할 수 있는 프토로토콜으로 Real-time web application 구현을 위해 널리 사용되고 있다. 프로토콜 (Protocol) - 통신 규약 네트워크의 접속 순서, 통신 회선을 이용하여 컴퓨터와 데이터를 주고 받기 위해서 정한 통신 규약 HTTP (Hyper Text Transfer Protocol) 은 프로토콜의 한 종류로서 웹 서버와 브라우저 사이에 문서를 전송하는데 사용된다. Http vs WebSocket 공통점 클라이언트가 애플리케이션을 사용하기 위해 URL 에 접근하여 HTTP method, header, entity 등의..
[SQL] SQL 문법 - ➁
·
개발 ━━━━━/Dev
SQL 문법 JOIN - 두 개의 테이블을 엮어서 원하는 데이터를 추출할 수 있다. SELECT * FROM users u LEFT JOIN point_users p ON u.user_id = p.user_id -- INNER JOIN - 교집합만 join 됨 / LEFT 는 null 값도 join users 테이블에 user_id 와 point_users 테이블에 user_id 가 같은 것들을 한 테이블에 모아준다. LEFT JOIN 은 붙이는 순서가 중요하지만 INNER JOIN 은 교집합이므로 순서는 상관이 없다. SELECT u.name, COUNT(*) AS cnt FROM orders o INNER JOIN users u ON o.user_id = u.user_id WHERE o.email L..