기존의 로드밸런서만을 사용하던 프로젝트에서 docker를 이용한 무중단 배포를 적용을 해야했습니다.이때, 추가적으로 Nginx를 도입하면서 했던 생각들과 여기서 어떤 방식이 제일 효율적이며 안정적인가 고민을 하면서 도입을 했는데 이번에 이를 정리해보려 합니다. 기존 프로젝트에선 로드밸런서에 ACM과 Route53을 통해 https를 적용하고 뒷단의 서버는 ci-cd로 중단 배포가 적용되었습니다. 이를 그림으로 간단하게 보면 다음과 같습니다. AWS ELB가 앞단에 존재하고, 요청을 받게 되면 뒤에 있는 EC2로 요청을 전달하는 과정으로 통신이 진행됩니다.이때, ELB에는 Route53을 통해 기존에 저희가 사두었던 도메인이 적용되어 있으며, ACM을 통해 SSL 인증서가 적용되어 앞단의 ELB는 443포..
이번엔 SSH에 대해서 알아보도록 하겠습니다. 저희가 개발을 할 때, 서버 배포를위해 클라우드에 접속을 할때 흔히 SSH로 원격접속을 하고, SCP로 파일전송을 했던 경험이 있을 겁니다. 그때는 "아 그냥 이런거구나~" 하고 넘어갔는데, 이번 기회에 SSH란 무엇이고 어떤원리로 진행이 되는지를 알아보도록 하겠습니다.ㅕㅣ 우선 SSH란 뭘까요? SSH(Secure Shell)이란? 암호화를 통해 클라이언트와 서버 간에 연결하기 위해 개발된 보안 프로토콜로, 서로간의 통신을 암호화하여 전송하여, 원격접속, 파일전송 등의 명령을 안전하게 진행할 수 있는 장점을 가지고 있습니다. 즉, 굉장히 안전한 클라이언트 서버 연결 방식이라고 생각하시면 됩니다. SSH 특징 안전한 통신 -SSH는 비밀번호나 공개키를 이용하..
해시함수란? -어떠한 랜덤한 길이의 입력 데이터를 받아서 고정된 길이의 '해시값'이라는 고정된 길이의 문자열로 변환하는 것을 해시함수라고 합니다. 해시함수는 데이터를 요약하는 역할을 하는함수로, 같은 데이터는 항상 같은 결과를 가집니다. 해시함수의 특징 입력값 크기 자유 -해시함수의 입력값의 크기는 자유로워 어떠한 길이의 입력값을 넣어도 다 가능합니다. 출력값 크기 고정 -입력값과는 다르게 출력값은 길이가 고정되어 있습니다. 일방향 성질 -해시함수는 해시값으로 만드는건 쉽지만, 그걸되돌려서 입력값을 아는건 거의 불가능합니다. 충돌 저항성 -어떤 두개의 서로 다른 데이터가 같은 해시값을 가지는 것을 찾기 어렵습니다. 해시함수의 활용 MDC(메세지 변조감지코드) -전달된 데이터가 중간에 변조되지 않았는지 확..
대칭키(Symmetric key) - 암호화 복호화를 할때 같은 키를 사용하는 방식으로, 암호화된 데이터를 복호화 하기 위해서 같은 키가 필요합니다. 이방식은 간단하고 빠르게 처리할 수 있지만 키관리가 어렵고, 키 유출될경우 보안이 취약해질 수 있습니다. 아래 그림을 보시면 Client와 Server둘다 같은 대칭 키를 가지고 있어 암호화와 복호화가 같은 키로 이루어 집니다. 통신하는 노드가 많아지면 키를 각자가져야하기에 복잡성이 생깁니다. 대칭키 주요개념 키(Key) 암호화와 복호화에 사용되는 키입니다. 암호 알고리즘(Encryption algorithm) 입력값으로 들어온 평문을 다양한 방법으로 치환하고, 변환하여 암호화하는 알고리즘입니다. 평문(Plaintext) -암호화되기 전의 원본 데이터를 의..
도커 네트워크 종류 Bridge 네트워크 -기본 네트워크 모드로서,도커 엔진의 가상 네트워크 인터페이스를 기준으로 도커엔진 내부 컨테이너들을 하나의 LAN으로 묶는 기술입니다. 컨테이너들은 Bridge 네트워크 내부에서만 식별되며, 도커엔진의 외부로는 식별이 안됩니다. 따라서 이 네트워크로 구축하였을 때에는, 외부에서 컨테이너 접근을 하게 하려면 포트포워딩 기술을 활용해야 합니다. Host 네트워크 -직접 호스트의 네트워크 인터페이스를 사용하여 도커 엔진내부에서 네트워크를 구성하는것이 아닌, 호스트 컴퓨터의IP주소를 사용하여 마치 호스트의 일부 프로세스 처럼 네트워크에 접근할 수 있게됩니다. 즉, 컨테이너와 호스트는 다 똑같은 IP주소를 가지며 포트번호를 달리해서 컨테이너를 구분하고, 외부에서 컨테이너 ..
포트포워딩이란? -네트워크에서 라우터에 들어오는 통신중에 특정 포트에 들어온 통신을 라우터 내부 망에 있는 특정 ip주소의 포트로 전송하는 것을 말합니다. 라우터에 특정 포트(EX.8000)로 통신이 들어왔다고 가정했을 때, 내부망 특정 IP(EX.192.168..13.2)의 특정 포트(EX.7000)쪽으로 전송합니다. 즉, WAN 네트워크에서 외부에서 내부와 통신을 하기 위해서 포트포워딩 설정을 필수적으로 해야합니다. 포트포워딩의 필요성 -외부 네트워크에서는 라우터 내부의 내부 네트워크 장치에 접근이 불가능합니다. 라우터는 공인IP로 전체 WAN네트워크에서 식별이 가능하지만, 라우터 내부 네트워크는 서로 사설IP로 설정이 되어있기때문에, 외부에서는 식별이 불가능 하기 때문에 내부네트워크로 접근이 불가능..
웹소켓(Web Socket)이란? -클라이언트와 서버간의 양방향 통신을 가능하게 하는 프로토콜입니다. HTTP와 같은 웹표준 프로토콜입니다. 이는 실시간, 이벤트 기반 통신이 필요한 애플리케이션을 개발할때 쓰이며, 서버와 클라이언트간에 자유롭게 메세지를 보낼 수 있게 연결을 합니다. 이 연결을 통해 클라이언트와 서버는 자유롭게 데이터를 서로 송수신을 할 수 있고, 서버측에서는 웹소켓 연결된 클라이언트를 관리할 수 있습니다. 스프링 웹소켓 구현 과정 WebSocket 설정 @Configuration과 @EnableWebSocketMessageBroker를 이용해 웹소켓 설정 파일을 구현합니다. 이 설정 클래스는 WebSocketMessageBrokerConfigurer를 구현하고 있는데, 총 두개의 메서드..
- Total
- Today
- Yesterday
- IP주소
- nat
- 깃
- 컴퓨터구조
- 자바
- DB
- 인공지능
- 문법
- 깃허브
- 테이블
- sql
- 데이터베이스
- 메세지큐
- 포트포워딩
- 자동화
- 데이터
- 클라우드
- 도커
- 스프링
- 웹소켓
- JPA
- 소프트웨어공학
- 보안
- 서버
- 프로토콜
- 쿼리
- 컨테이너
- 네트워크
- 파인튜닝
- 배포
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |