Docker / 정적&동적 / HTTPS

🪐 C:on·2021년 8월 8일
0

Development_sense

목록 보기
2/6

도커


서버를 돌리기 위한 환경을 구축하기 위해선 언어, 웹서버, 데이터베이스, 자동배포툴 등 버전을 신경써서 다운 받고 이것저것 설정을 해줘야 한다.

이 작업을 마치고 서버를 운영해오다가 더 성능 좋은 서버로 옮기거나, 접속량이 많아져서 여러개의 서버를 추가해야 할 때 원래 사용하던 서버의 환경을 또 반복 설치, 설정하는 것은 매우 귀찮고 힘든 작업이 될 것이다.

뿐만 아니라 같은 서버에 여러 서비스를 돌리는 경우, 각각이 다른 실행 환경에서 동작할 때 까다로운 작업이 필요해진다.

도커 는 이러한 문제를 깔끔하게 해결해준다.

각 요소들이 설치된 모습을 이미지라는 형태로 저장한 후 도커헙에 업로드된다. 또한, 아까 이것저것 설정한 상태를 텍스트나 문서형태로 저장할 수 있다.

이제 언제 어디서든 서비스에 필요한 설정대로 도커헙으로부터 다운해서 사용을 하기만 하면 된다!

도커와 가상컴퓨팅과 차이를 명확하게 구분해보자

가상컴퓨팅은 물리적 컴퓨터 안에 가상의 컴퓨터 여러개가 물리적 공간을 나눠 갖는 반면,
도커는 실행환경만 독립적으로 돌리기 때문에 훨씬 가볍게 설치하고 실행하고 연동할 수 있다.



정적웹과 동적웹


정적웹은 언제 접속해도 계속 같은 리소스를 건네주는 웹사이트, 프로그래머가 작성해놓은 코드들이 그대로 클라이언트가 건네받아 보여지는 웹

동적웹은 접속할 때마다 최신정보들이나 건네 받는 데이터가 바뀔 수 있는 웹

무조건 동적웹이 좋은 것만은 아니다.

예를 들어, 블로그의 경우 어떤 글을 작성했을 때 동적웹이라면 글의 내용은 DB에 저장되고 누군가 블로그를 볼 때마다 DB에서 글 데이터를 받아와야 한다.
고작 같은 글을 보여주기 위해 매번 서버가 일을 하도록 관리하는 것도 비효율적이기 때문에 글을 하나하나 html 파일 단위로 저장해서 서버일을 줄이는 것과 같이 정적웹이 효율적인 경우가 있다.

그래서 요즘 개발자들은 jekyll 이나 hugo 같은 정적 웹 생성 툴로 블로그를 많이 만들곤 한다.



HTTPS


어떤 정보를 서버로 보낼 때 그냥 http 프로토콜로 보내면 누구나 알아볼 수 있는 텍스트로 보내진다.

만약 누군가가 이 정보를 중간에 들여다 본다면 해킹이 되는 것이다.

HTTPS 는 이와달리 정보를 뒤죽박죽 형태로 변경해서 서버로 보낸다. 또한 사용자가 접속한 사이트가 신뢰할 수 있는 사이트인지도 판별해준다.

이 두개의 기능이 어떤 원리로 구현되는지 알아보기 위해 대칭키비대칭키에 대해 먼저 알아야 한다.

🔎 대칭키

대칭키는 수신과 송신부가 같은 암호화표를 가지고 문자를 주고받는 것과 같다.

이것의 한계점은 한번은 암호화표 즉 대칭키를 공유해야 하는데 이걸 가로채면 아무런 의미가 없어진다.

이를 보완한 방법이 비대칭키이다. 개발영역에서는 이를 공개키라 부른다.

🔎 공개키

공개키는 2개의 키가 있는데 A 키로 암호화시킨 데이터는 B키로만 복호화를 할 수 있다.

예를 들어 네이버는 복호화기능을 가진 개인키를 가지고 있고 사용자들은 공유되는 공개키를 가지고 데이터를 암호화한다.

그러면 사용자가 암호화한 데이터를 네이버만이 복호화 할 수 있는 것이다.

또한 이 방식을 이용하여 네이버가 클라이언트에게 보내는 정보 중 일부는 개인키로 암호화되어 보내진다.

그래서 클라이언트가 공개키로 이를 복화하하면 신뢰할 수 있는 사이트인거고 그렇지 않으면 신뢰할 수 없는 사이트라고 판단하게 된다.

❗ Https 원리

  1. 먼저 클라이언트와 서버는 서로 신뢰하지 못하는 상태이다.

  2. 클라이언트는 어떤 랜덤 데이터를 생성해서 서버에 보낸다.

  3. 이를 수신한 서버는 무작위 데이터와 해당 서버의 인증서를 클라이언트에게 보낸다.

  4. 여기까지의 과정을 handshake라고 한다.

  5. 이제 클라이언트는 이 인증서가 진짜인지 브라우저에 내장된 CA들의 정보를 통해 확인하게 된다.

  6. CA의 인증을 받은 인증서들은 CA의 개인키로 암호화 되있기 때문에 진짜 인증서라면 브라우저에 저장된 CA의 공개키로 복호화할 수 있다.

  7. 성공적으로 복호화된 인증서에는 서버의 공개키가 포함되어 있다.

  8. 클라이언트는 이 공개키로 아까 handshake에서 생성된 두개의 임시 데이터를 혼합하여 만든 임시키를 암호화하여 서버로 보낸다.

  9. 이제 양쪽에서 일련의 과정을 거쳐 동일한 대칭키를 가지게 된다.

  10. 이 대칭키는 서버와 클라이언트만 가지고 있으니까 보안이 강해진다.

0개의 댓글