[HTTP] IP / TCP / UDP / PORT / URI
·
개발 ━━━━━/CS
IP (Internet Protocol)특징지정한 IP 주소에 데이터 전달패킷 (Packet, Package + Bucket) 이라는 통신 단위로 데이터 전달 한계비연결성패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송비신뢰성중간에 패킷이 사라짐패킷이 순서대로 오지 않음프로그램 구분같은 IP 를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상?인터넷 프로토콜 스택의 4계층애플리케이션 계층HTTP, FTP전송 계층TCP, UDP인터넷 계층IP네트워크 인터페이스 계층  TCP (전송 제어 프로토콜, Transmission Control Protocol)특징연결 지향 - TCP 3 way handshake (가상 연결)1. (클라이언트 -> 서버) SYN2. (서버 -> 클라이언트) SYN + AC..
[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..
[C++/Algorithm] cin.tie(NULL) 과 ios_base::sync_with_stdio(false)
·
개발 ━━━━━/C++
백준 단계별로 풀어보기에서 문제를 풀던 중 15552번 : 빠른 A+B 문제 내용에 생소한 것이 쓰여져 있어 알아보았다. https://www.acmicpc.net/problem/15552 본격적으로 for문 문제를 풀기 전에 주의해야 할 점이 있다. 입출력 방식이 느리면 여러 줄을 입력받거나 출력할 때 시간초과가 날 수 있다는 점이다. C++을 사용하고 있고 cin/cout을 사용하고자 한다면, cin.tie(NULL)과 sync_with_stdio(false)를 둘 다 적용해 주고, endl 대신 개행문자(\n)를 쓰자. 단, 이렇게 하면 더 이상 scanf/printf/puts/getchar/putchar 등 C의 입출력 방식을 사용하면 안 된다. Java를 사용하고 있다면, Scanner와 Sys..
[MySQL] Invalid MySQL server downgrade: Cannot downgrade from 80300 to 80200. Downgrade is only permitted between patch releases
·
개발 ━━━━━/Troubleshoot
문제 기존 MySQL 데이터를 복원하는 과정에서 컨테이너가 무한 재시작을 하길래 에러 로그를 확인해보았다. [ERROR] [MY-014061] [InnoDB] Invalid MySQL server downgrade: Cannot downgrade from 80300 to 80200. Downgrade is only permitted between patch releases. 데이터 복원 작업을 위해 mysql:latest 태그가 붙은 이미지를 불러와서 docker volume 에 저장 후 그 볼륨을 기존에 사용하던 MySQL 이미지에 마운트하는 방식인데 태그가 latest 이다보니 그 사이 업데이트가 되어 버전이 맞지 않는듯 했다. 해결 태그명이 latest 로 되어 있기 때문에 정확한 버전을 알 수가 ..
[Java] Input 값 입력 받는 방법 ② - BufferedReader 클래스
·
개발 ━━━━━/Java
BufferedReader BufferedReader 클래스는 버퍼를 이용한 대표적인 I/O 클래스로, 입력된 데이터를 바로 전달하지 않고 버퍼에 저장해두었다가 전달하는 방식이기 때문에 속도 측면에서 빠르고, 많은 양의 데이터를 처리할 때 유리하다. 사용 방법 import java.io.BufferedReader; import java.io.InputStreamReader; 를 우선 import 해주어야 한다. BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); // 선언 String s = bf.readLine(); // String 으로 입력 받기 (기본) int i = Integer.parseInt(bf.readLine..
[Nginx] default.conf 에 환경변수 적용하기
·
개발 ━━━━━/Troubleshoot
문제 프로젝트에서 nginx 의 default.conf 파일을 아래와 같이 proxy_pass 부분에 실제 서비스 주소를 입력했었다. server { listen 80; listen [::]:80; server_name reuse.kro.kr; location /api { proxy_pass 실제 서비스 주소; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_set_header X-Real_IP $remote_addr; proxy_redirect off; } } 실행은 당연히 잘 되었지만 github 으로 파일을 관리하고 싶어서 위 주소를 환경 변수로 만들고자 했다. 같은 경로에 '..
[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에서 ..