전체 글
쿠버네티스 소개
쿠버네티스 소개 1.1 쿠버네티스와 같은 시스템이 필요한 이유 1.1.1 모놀리식 구조에서 마이크로서비스 구조로 전환 옛날에는 소프트웨어 애플리케이션이 monolithic 구조였음. 현재도 레거시 시스템은 이런 경우가 많음. 현대에 와서는 이런 구조가 마이크로서비스라는 독립적으로 실행되는 더 작은 구성 요소로 세분화됨. 그래서 급변하는 비즈니스 요구사항에 맞춰서 서비스를 개발할 수 있게 됨. 하지만 서비스의 규모가 커지고 점점 늘어나면서 이걸 수동적으로 관리하는 것을 어려운일. 그래서 배포나 구성, 관리, 스케쥴링, 장애 처리를 해줄 수 있는 자동화 과정이 필요 -> 이 역할을 수행하는게 쿠버네티스 모놀리식 애플리케이션은 서로 강하게 결합되어 있고 전체가 하나의 운영체제 프로세스로 실행되기 때문에 하나의..
ConfigMap과 Secret
컨피그맵과 시크릿: 애플리케이션 설정 7.1 컨테이너화된 애플리케이션 설정 컨피그맵은 설정 데이터를 최상위 레벨의 쿠버네티스 리소스에 저장하는 방법을 말함. 시크릿은 컨피그맵과 비슷한 설정 데이터를 저장하지만 암호화 키 값은 보안과 관련된 정보를 저장한다는 차이가 존재. 7.2 컨테이너에 명령줄 인자 전달 7.2.1 도커에서 명령어와 인자 정의 dockerfile에서 ENTRYPOINT는 컨테이너가 시작될 때 호출될 명령어를 정의하고 CMD는 ENTRYPOINT에 전달되는 인자를 정의. ENTRYPOINT를 전달하는 형식은 shell과 exec형식이 있는 shell은 ex) ENTRYPOINT node app.js 방식이고 exec 방식은 ex) ENTRYPOINT ["node","app.js"] 방식이..
QUIC HTTP/3 내용 정리
QUIC 새로운 transport layer udp위에 동작하지만 tcp에 상응하는 transport layer 운영체제 밖에서 동작 현대 통신 프로토콜 패러다임 리눅스 커널 바깥으로 유연하게 프로그래밍할 수 있게 PowerShift from Standard to Opensource Out of TCP QUIC은 TCP를 대체하는 범용 목적의 전송 계층 통신 프로토콜로서 당초 처음에 이름을 낼때 Quick UDP Internet Connections로 제안 → IETF에서 QUIC으로 지정. QUIC 은 UDP 베이스로 tls로 반드시 보안을 제공하도록 했고 에러 검출 및 복구, 흐름 제어에 대한 내용이 들어감. 하지만 기존 tcp와 관련해서만 기술이 발전 하다보니 tls와 친화력이 없어서 성능적으로 문..
WebRTC 내용 정리
기존의 p2p방식은 Dirty P2P -> 너무 무거움 클라이언트들이 서버 없이, 클라이언트들끼리 연결되어 통신 -> 다른 클라이언트에 대한 정보 다 가지고 있어야 한다. Client-Server : 중앙집중화된 역할 하는 서버 존재. 내가 채팅 친 것을 다른 애들한테 전달하는 걸 서버에 위임 p2p의 다른 형태를 가져가서 만든 것이 블록체인 p2p방식을 기반으로 생성된 체인 형태의 연결고리 기반 분산 데이터 저장 환경에 저장하여 누구라도 임의로 수정할 수 없고 누구나 변경의 결과를 열람할 수 있는 분산 컴퓨팅 기술 기반의 원장 관리 기술임 지속적으로 변경되는 데이터를 모든 참여 노드에 기록한 변경 리스트. 분산 노드의 운영자에 의한 임의 조작이 불가능하도록 고안됨 누군가가 결제를 만들고 블록체인은 이 ..
HTTP2 정리 내용
HTTP1.1 의 문제점Http는 처음에 text, html만 실어나를 것 생각하고 만들어졌다. 하지만 방향 바뀌면서 오리지널 설계가 담지 못하는 부분 생겼다.3.5세대 이동통신과 스마트폰이 전세계 인터넷의 폭발적 성장을 이끌었다.HoL(Head of Line)줄의 머리가 통과하지 못하면 뒤에서도 통과하지 못한다. 첫번째에 대한 응답 만들지 못하면 뒤의 응답들이 다 만들어져도 못나가고 기다리고 있어야 한다.Fat Message Headerhttp 1.1은 사람이 읽을 수 있게 되어있어서 헤더에 많은 메타 정보를 저장햇는데 앞에 있는 정보와 뒤에 있는 정보가 독립적이라 앞에 많은 것 보냈으면 뒤에도 많은 것 보내야 한다. ⇒ 중복된 Header 값 전송 (domain sharding이란 여러 개의 서브도메..
gRPC 공부 내용 정리
들어가기 앞서 gRPC를 spring boot를 이용해서 4가지 방식에 대한 실습 git repo https://github.com/Eeap/Springboot-with-gRPC gRPC 기존 함수 호출 방법 종류 정적 링킹 - 실행 파일 생성시 필요한 라이브러리를 포함하여 생성하는 링킹 방식 동적 링킹 실행 파일 안에 라이브러리 코드 X, 하나의 메모리 공간에 매핑 후 여러 프로그램에서 공유하여 사용 필요한 함수 호출하면 필요한 모듈을 메모리 상으로 불러와서 실행 원격 함수 호출(RPC) 함수 호출했을 때 호출된 함수의 실행이 통신을 타고 원격지에 있는 컴퓨터에서 실행(분산 네트워크 환경) 컴퓨터를 연결하는 RPC 프로토콜이 필요 필요한것 - IDL : 원격지와의 연결 지원. 서로 다른 컴퓨터의 정보를..
Apache2와 내장 톰캣 연동 with springboot
처음에 ip(특정 포트 지정!)로 하다가 도메인으로 하다보니 내장 톰캣이 떠있는 8000번 포트가 아니라 http는 80번 포트 https는 443번 포트로 연결되다 보니 어떻게 할까 고민하다가 apache를 띄우고 apache를 내 내장 톰캣에 연동할 수 있는 방법을 찾았다..! 먼저 sudo apt-get install을 통해 apache2와 mod_jk를 다운 받았고 sudo systemctl start apache2.service 를 통해 서버를 켜서 내 도메인으로 연결되었을때 디폴트 index.html이 잘뜨는지 확인한 다음 아래와 같은 설정들을 해줬다! (아래는 추가한 부분입니다) sudo vi /etc/apache2/apache2.conf LoadModule proxy_module /usr/..
springboot + Mysql with AWS Lightsail
공식 문서에서 설명하는 lightsail에 내용에서는 아래와 같이 설명하고 있어요! Amazon Lightsail은 웹 사이트 또는 웹 애플리케이션을 구축해야 하는 개발자가 Amazon Web Services(AWS)를 시작하는 가장 쉬운 방법입니다. 이를 통해 인스턴스(가상 프라이빗 서버), 컨테이너 서비스, 관리형 데이터베이스, 콘텐츠 전송 네트워크(CDN) 배포, 로드 밸런서, SSD 기반 블록 스토리지, 고정 IP 주소, 등록된 도메인의 DNS 관리, 리소스 스냅샷(백업) 등 프로젝트를 신속하게 시작하는 데 필요한 모든 것을 저렴하고 예측 가능한 요금으로 사용할 수 있습니다. 기존의 ec2만 써봤는데 Lightsail관련 세션을 몇번 듣고 호기심이 생겨서 이번 기회에 써봤는데 설정? 같은 부분들이..
docker-machine with AWS EC2 driver
m1 mac 환경에서는 현재 virtualbox가 지원이 안돼서 docker-machine driver에 aws ec2가 있길래 이걸 이용해서 docker swarm 실습을 진행해봤다! access_key와 secret_key는 본인의 key를 적어주면 됩니다 (저는 aws IAM에서 AmazonEC2FullAccess 라는 권한을 추가해준 사용자로 했어요) docker-machine create --driver amazonec2 --amazonec2-access-key {access_key} --amazonec2-secret-key {secret_key} --amazonec2-open-port 8000 --amazonec2-region ap-northeast-2 manager manager 뿐만 아니라..
HTTP2 특징 정리 및 springboot로 테스트하기
HTTP 1.1 의 전형적인 문제들RTT 시간 증가 → http1.1의 하나의 커넥션당 하나의 요청을 처리하므로 tcp 3-way handshaking이 매번 커넥션 요청을 할때마다 일어남 이건 불필요한 RTT 시간을 증가시킴(syn를 보내고 syn ack를 받는 왕복 시간)Client-driven transmission → 클라이언트가 요청하지 않으면 서버는 클라이언트로 쪽으로 정보를 전달하지 못함Fat message headers → 헤더에는 수많은 메타 정보가 들어감. 매 요청 시마다 엄청난 양의 헤더를 전송해야하며 중복된 정보가 전송될 수도 있음Head of line blocking → 하나의 커넥션당 하나의 요청을 극복하기 위해 pipelining 기법을 도입해서 순차적으로 여러 개의 요청을 보..