관리 메뉴

A seeker after truth

데센프 2주차 본문

수업 필기/Docker, Kubernetes(20-1) - 공개글!

데센프 2주차

dr.meteor 2020. 3. 23. 12:26

3 인프라 & 가상화

1. 온프레미스

정의: 특정 조직이 본인의 컴, 데이터센터를 직접 구축하고 운영하는 것을 의미. 물리적으로 만드는.

이의 반대는 퍼블릭 클라우드 컴퓨팅(데센)- 빌려쓰는 입장에서 그러하다.

예) 삼전 데센 구축해서 계열사들에 필요할 때마다 빌려줌

각각 장단점

- 퍼블릭 클라우드: 필요할 떄 필요한 만큼 사용, 그만큼 지불, 그 밑단은 우리가 몰라도 된다. 따라서 돈을 내고 복잡하고 원래 전문가가 해야할 일을 편하게 쓰면 된다. 난 빨리 만들어서 배포하고 서비스화 하고 싶다 하는 사람들이 쓰면 된다.

- 온프레미스: 라이센스 비는 적음, 그러나 그 외 ㅅ구업 자료에 나온 모든 부분은 다 돈&시간이 든다. 보안이 중요한 경우 사용

6쪽 왼쪽이 온프레미스에 해당. 내가 직접 만든것이니 내가 키우는 애묘처럼 느껴질 것. 반대로 오른쪽은 굳이 정은 생기지 않고, 필요한 만큼 일을 시킬 뿐. 가장 큰 차이는 바라보는 시각.

왼쪽을 cats model이라 함. 서버를 의인화해서 독특한 이름을 실제로 붙였었음. 오... 이건 잘 이해가 안되는데 이런 식으로 이름을 붙이고, 애정을 가지면서 이 서버가 UNIQUE하길 바라는데, 이게 관리자, 개발자에겐 "패착"이 된다. 자세한 건 뒤에서 가면서 설명

오른쪽을 cattle model. 모든 서버를 동일하다 생각하고 접근하는 모델을 말함. 우린 컴터를 이처럼 워커로 바라봐야 한다. 비슷한 능력있는 애들끼리 동일 취급

9쪽 초록색 부분이 빌려쓰는 부분에 해당한다. 10쪽은 그에 대해 피자에 비유를 한 자료. 차별화 포인트가 없어질수록 오른쪽 방향에 있는 것을 선택. 11쪽은 자신의 능력에 따라 그걸 비교하는 것

14쪽은 서버에서 가장 밑부분을 이루는 것들을 말함

* 제시 영상 보면서 새롭게 알게된 것: 운체 위에서 돌아가는 key 소웨를 Daemons라고 한다! 이들은 인터넷을 통해 유저 눈에 보이는 웹 사이트 파일이나 유저가 직접 컨트롤할 수 있는 소웨랑 다르게 백그라운드에서 돌아가는 것을 일컫는다. 그 예에 해당하는 것이 바로 http server, ftp server(upload file하는 것), email server, db server

16쪽은 웹 서버의 다양한 종류 설명. 여기부터 뒤쪽까지 왠지 서술형으로 시험 나올 수 있을 것 같은...

구조화되어있는 데이터를 질의하는 게 데베. 

* 영상 보면서 또 알게 된 것. NoSQL을 no sequel 이란 발음으로 함. 이 영상은 한번 더 볼것

https://www.youtube.com/watch?v=BgQFJ_UNIgw

정형 데이터는 형태가 정해진 것, 비정형은 그 반대를 말하며 비정형 데이터를 다룰 때 NoSQL 을 믾이 사용함. 전형적인 sql까지 포함한다고 한다.

 

미들웨어: 어플리케이션과 운체 가운데에서 어플에서 필요하지만 운체에서 제공하지 않는 기능을 제공하는 역할. 라이브러리, 프레임워크 등등도. 통상 운체에 더 친밀해서 이를 보완하는 역할하는 것을 말함

25쪽 그림은 한번 보고 갈 것.

 

이제 내가 만든 서비스를 대규모로 배포해보고 싶은 상황(26쪽)

온프레미스? 퍼블릭/프라이빗 클라우드?

직접 구축 먼저 생각해보자. 어떤 작업을 필요로 할지.

27쪽~. 은 직접 구축하고 쓰는 경우

28~: 우리에게 필요한 컴은 무엇이지? ... 등 굉장히 많은 것을 고민해야 함.

 

"내 프로그램이 돌아가기 위한 똑같은 환경이 구비되어 있다" 는 것이 전제되어야 함(30쪽)

 

2. Infrastructure as Code (IaC)이란 무엇인지에 대한 설명을, IaC를 활용하지 않는 이전의 방식과 IaC를 활용하는 방식의 경우의 예제를 활용하여 설명하시오.

 

32: 지금까지는 우리가 한 컴퓨터 위에서 돌아가는 하나의 소웨를 짰고, 그 소웨가 모든 일을 하도록 놔뒀다. 그러나 이제부턴 그렇게 하지 않아도 된다. 씨피유나 컴이 100대가 있으면 작업을 할 애들이 늘어났기 때문에 그렇게 하지 않아도 된다. 그러면 한 씨피유에서 돌아가는 일은 굉장히 작은 일만 돌아가면 된다.-->마이크로서비스. 이런 클라우드 개념이 등장하면서 소웨를 개발하는 방법 자체가 달라짐.

CD: 유지보수하는 사람이 이젠 많이 필요 없음. 조금만 하면 됨. 많은 사람들이 함께 개발하고 일할 땐 언제 모여서 테스트하고 배포할 건지 날짜, 시간 등을 정하고 했다. 이젠 소규모 몇명이 아주 작은 기능 부분을 개선한 뒤 사용자에게 배포.

이젠 단순히 서버가 많은게 아니고, 소웨를 어케 개발하고 배포할 것인지 개념과 방법이 달라짐. 핵심 개념은 '자동화'. 환경을 일일이 맞춰주는게 불가능하므로, 밑에 이런 환경이 제공되어야 해! 라고 말하면 그걸 준비해달라고 한다.

 

34: Infra as Code의 장점. 필요한걸 요청하기만 하면 되고 그 외 고민은 안해도 되는. 서비스에 집중할 수 있음

이렇게 하려면 수천 수만 코드를 올릴...

35: 다양한 버전의 소웨를 유지하려고 하면? -> 이게 캣모델인데, 바람직하지 않.

36: 데센에서 클라우드 컴퓨팅 모델을 도입하기 위해선 인프라, 어플 모두 immutable model을 따라야 함. = cattle model

37: 하나의 서비스에 대해선 하나의 immutable한 이미지만 올릴 것

38: 가장 중요한 것은 관리. 하나를 트래킹할 필요는 없다. 서로 스파게티처럼 꼬이는 것 방지 가능.

39: 우린 표준화되어있고 동일한 캐틀 모델에 의거, 내가 5마리에게 주면 5개 올리고... 식으로 할 것이다

 

 

4 가상화 & 컨테이너 기술

3. Virtual Machine 기술을 사용시, 성능이 저하되는 경우에 대해서 이유를 설명하고, 이를 Container 기술로 해결할 수 있는 이유를 설명하시오.(답: 19~20)

4. Container 기술은 이미 이전부터 있었던 기술인데, 유독 Docker가 다른 Container 기술과 비교하여 많이 사용되는 이유를 설명하시오.

10쪽 오른쪽은 논리적으로 여러 개의 컴이 있는 것처럼 동작시킬 수 있음. 하나의 자원을 6개인 것처럼 제공해줄 수 있다. 하웨와 어플의 분리 구조.

11: 이렇게 가상화를 해주는 소웨를 하이프바이저 가상화/레이어/프로그램이라 한다. 왼쪽 그림 같은 동작 방식도 가능하다. 오에스의 도움 없이. bare metal(기계 자체가 직접) VS hosted. 그리고 오른쪽 버전에서 게스트 운체는 서로 다른 것이어도 ㄱㅊ.

13: 한 대의 컴에 너무 적은 용량만 차지하는 소웨가 있다고 해도 그 한대만 썼었던 것. 지금은 논리적으로 여러 대로 쪼개질 수 있으므로 상대적으로 비용 절약. 그리고 서로 다른 운체를 돌릴 수 있기 떄문에 따로 그 운체가 들어간 기기를 구매하지 않아도 되는.

16: 가상머신의 문제로 무엇이 등장했는가? - 회사에서 프라이빗 컴퓨터를 서로 나눠쓴다고 이걸 가상 머신 띄우는걸로 한다? ... 그럼 99% 회사가 다 리눅스를 쓰는데, 리눅스 위에 가상 머신 위에 리눅스를 올리는 => 굳이 이래야...? 느려 터져지기만 하는데...?

아 이 부분 들으니까 진짜 도커랑 차이점 및 등장 배경이 완전 이해된다...

17: 리눅스 위에 리눅스 가상머신을 띄우지 않으려면 "운체 가상화" 기법을 써야하며, 그게 도커&쿠버네티스.

18: 양쪽 그림의 가장 큰 차이는 "무게 차이". 오른쪽에 있는 A~F의 어플들은 가상머신과 비슷한 일을 할 것이고 메모리 씨피유 등을 점유하고 있겠지만, 가상머신만큼 무겁진 않다. 왼쪽은 왜 안좋느냐. 쓰다가 필요없음 지우고 또 지우고... 그러는데 지워질 땐 깔끔하게 지워지지 않는다. 그러면 프로그램들끼리 간섭을 일으켜서 프로그램이 죽기도 하고, 컴퓨터는 점점 느려지고... 결국 운체를 다시 깔기에 이르른다.

19: 아 여기도 완전 중요한 절이네. 왜 이름이 컨테이너인지 이해할 수 있는 파트였음. 테이너 뚜껑을 열고 설치하고 싶은 모든 프로그램( 어플리케이션, 운체 모두)을 한번에 넣고 os 위에서 돌린 뒤, 삭제 할 땐 깔끔하게 한번에 삭제할 수 있는 기술!!!! 그리고 서로 독립적. os를 통째로 가지고 있지도 않기 때문에 사이즈가 작다. 설치&실행 속도도 매우 빠르다.=>더 많은 어플들이 더 적은 자원 요구

21: 보라색 가상 머신의 y축 즉 시간이 exponential하게 증가하는 것을 볼 수 있음. 시간이 이렇게 증가한다는 것은 더이상 동작하지 않는다는 이야기랑 같음. => 도커는 더 여러개 쓸 수 있음

22: 키포인트는 사용된 메모리인 파란색 그래프.

23: 이건 씨피유임. 도커는 12개를 띄워도 계속 유저가 씨피유를 쓸 수 있을 만큼 점유율이 낮음. 빨간색 그래프 보는 거임. 반면 가상머신은 12개 띄워지면 빨간색이 거의 바닥에 가있음

24: 이전엔 100개의 어플을 띄워서 쓰려면 100개를 진짜 띄워서 썼음(여기서 동시성이 나오겠군...?). 반면 마이크로서비스는 100대 컴이 있다면, 소웨를 5개 정도로 쪼개서 블록화하고, 각 블럭마다 필요한 만큼의 씨피유/컴읉 할당하는.