TIL-20210128

2021. 01. 29.
  • 그 동안 도커를 공부해야 하나 고민 중이었는데 파이로가 너무 설명을 잘 해줘서 시간이 많이 단축된 것 같다. 그리고 막힌 부분을 지기가 풀어줘서 이해가 잘 된 것 같다. 내일 팀원들과 공유해봐야겠다.
  • 기본적인 컨셉은 내가 알고 있는 것과 비슷했다. 하이퍼 바이저를 사용하지 않고 가상화를 하는 것인데, 이 때 컨테이너라는 개념이 사용된다.

    컨테이너는 namespace와 cgroups를 이용하여 프로세스를 격리(isolated; 고립보다는 격리라고 많이 표현하는 듯 하다.) 시킨다. 격리시킨다는 표현이 생소한데, 기본적으로 프로세스는 애초에 최소한의 격리상태라고 한다. 포트가 사용중인데 접근 할 경우, 해당 포트를 차지하지 못하고 프로그램 실행이 안되는 것을 예시로 들 수 있다. 이처럼 프로세스가 다른 자원에 접근하지 못하도록 막는 것을 격리라고 표현한다. 즉, 컨테이너는 리소스 사용이 제한 된 프로세스라는 것인데, namespace라는 개념을 이용하여 격리된 프로세스들을 묶어 놓은 것이다. 이 때, 리소스 사용의 제한은 cgroups를 이용하여 이루어진다. 따라서 컨테이너는 cgroup을 확장시켜 만들어 놓은 것이라고도 할 수 있겠다.

    container

    ms docs에서 가져왔다. 위의 그림처럼 커널 위에 있는 프로세스지만, 컨테이너라는 단위로 묶여 격리되어있다.

    도커의 장점은 하이퍼바이저가 없고 커널을 공유하기 때문에 훨씬 가볍고 빠르다. 또한 이미지라는 개념을 사용하여 원하는 빌드 버전으로 배포할 수 있는데, 이 때 배포환경은 도커로 통일되므로 관리가 아주 용이해진다. 백엔드 개발자는 지옥같은 프로퍼티 관리에서 조금 벗어날 수 있을 것 같다.

    여기서 이해가 잘 안되는 부분은 커널영역을 공유한다고 했는데, 어떻게 독립적인 OS처럼 작동하느냐였다. 도커의 이미지는 호스트의 커널영역을 사용하고, 실제로 터미널에서 불러올 때도 호스트의 영향을 받기 때문이다. 이는 도커와 같은 컨테이너 기반의 가상화를 잘 못 이해하고 있어서인데, 컨테이너 기반의 가상화는 OS 가상화가 아닌 커널 가상화다. OS의 구성요소를 생각해보면 OS는 커널과 시스템 애플리케이션의 조합으로 이루어져 있다. 즉, 이미지에 커널은 없지만 해당 이미지에서 실행하고자 하는 파일 혹은 시스템을 위한 시스템 어플리케이션, 즉, 사용자 모드 os 파일과 기타 구성 파일이 포함되어 있는 것이다. 이 때, 이미지에 포함 된 os 배포판이 달라도 커널은 모두 리눅스이기 때문에 문제 없이 동작 한다.

    https://docs.microsoft.com/en-us/virtualization/windowscontainers/about/ 여기에 설명이 잘 되어 있는데, 이 것도 내일 팀원들과 공유해야 겠다.

  • mysql 환경변수 설정하는 법을 알게 돼었다. 그 동안 실행하면서 인자로 붙여줬었는데, 특히 도커를 사용할 때 좋은 방법 같다.
  • 스크립트로 데이터를 넣어야 하는데, 쉘 스크립트로 가능한 것인지 모르겠다. 프로그래스 바를 넣는 보너스 미션이 있는데, 이걸 토대로 생각해보면 sql 스크립트로 작성하는 것이 아닌 것 같다. 그렇다고 해서 하나씩 실행하기에는 속도가 너무 느릴 것이고 파일로 뽑아 놓는 것은 다루기 까다로울 것 같다. 혹시 파이프라인을 이용해야 하는 것인지...누가 좀 알려줬으면 😭
  • 오늘의 너목들 회의는 용재님의 리뷰와 서비스에 대한 아이디어 토의였다. 용재님은 벌써 어느정도 환경 구성을 해놓으셨다... 살짝 부담된다 ㅋㅋㅋ. 아이디어는 큰 진전 없이 끝났고, 데브독스 하기 전에 잠깐 모이기로 했다. 예외 상황들을 코드로 정의하면 프런트가 개발하기 수월하다고 한다. 기획 단계에서 함께 정의하기로 했다. 구현을 찾아보니 예외만 잘 잡아놓고 리턴을 위한 인터페이스용 객체만 잘 만들어두면 큰 문제는 없을 것 같다.

아쉬운 점

  • 밀린 인강을 들었는데 퀄리티가 너무 똥이다... 시간이 너무 아까웠다. 마침 내일 호눅스의 강의가 db라서 약간은 기대하며 들었는데, 너무 실망이다. 돈이 아까워서라도 과제와 퀴즈는 모두 완수해야겠다.

내일 할 일

  • 쉘 스크립트로 데이터 넣는 것은 잘 생각해보자. 도움도 적극적으로 받아보자.
  • jdbc 연결은 최소한만 하고 도커 compose를 연습해보는 것이 좋을 것 같다. 잘 해두면 프로젝트에도 활용할 수 있을 것 같다. 그리고 여기까지 잘 진행되면 이번 주 데브독스 주제로 발표해야 겠다.
  • 무리해서라도 인강 진도를 빼놔야 할 것 같다. 웬만하면 주말에 프레임워크를 대충 잡아놓고 싶다.
정대화
DaeHwa_Jeong@outlook.com

Powered with by Gatsby 2.0