728x90

개발팀과 운영팀은 보통 적대적이다. (재즐보프님의 의견) 

개발팀 - 좋은 서비스를 만들고, 새로운 언어를 배우고, 새로운 기술이 나오면 적용하고싶어하는 욕구가 있다.

운영팀 - 안정적인 운영이 더 중요함. 개발보다는 안정적인 서버 유지를 더 추구한다. 

 

개발자들이 다양한 언어를 쓰기 떄문에 이를 통합하면 오류가 많다. 기존 vmware 는 보통 무겁다. 하드웨어를 추상화시켜서 운영체제 위에다가 하드웨어를 구현해주고 그 위에 운영체제를 설치하기 때문에 부하가 심해진다. 

 

컨테이너가 이 과정을 빼주는 역할을 한다!

 

 

무엇을 사용할까?

 

리눅스 컨트롤 그룹(프로세스로 소비할 수 있는 리소스 양(CPU, memory, I/O)등을 제한) 을 사용해 리눅스에서의 가상화를 이뤄주고있다. 만약 윈도우에 설치되면 하이퍼바이저를 사용해 마치 리눅스 커널처럼 동작하는 것처럼 !! 사용됨. (리눅스에서 사용하길 추천!)

 

리눅스 네임 스페이스 라는 기술도 사용 - 파일이나 네트워크 인터페이스를 가상화해서 자기만의 것을 가질 수 있다. 

별도의 공간을 할당해서 공간의 프로세스가 서로 간섭하지 못하게 하는 논리적인 방어막을 칠 수 있다.

 

 

 

 

vm ware가 docker를 사용했을 때보다 시간과 성능이 안정적이지 않음. (여러 개일 때)

 

 

 

 

 

기존의 개발 방식 비교. 컨테이너가 필요한 이유!

 

monolith : 원래는 이런 서비스들을 하나로 묶어 다같이 관리함. 단점: 한 번 컴파일하면 굉장히 많은 시간이 걸리고 정기적으로 점검을 해야 함. 업데이트 하고 나서도 버그 발견하면 다같이 모여서 빌드하고.. 효율성이 떨어짐. 

 

microservices : 하나의 서비스만 구축함. 업데이트도 다른 서비스 신경 쓸 필요 없이 자신의 서비스만 업데이트 할 수 있음. 

 

 

microservice 사용 시 users 가 인기가 많으면 users 만 따로 복사해서 관리할 수 있기 때문에 한정된 자원 안에서 효율적으로 돌아가게 할 수 있기 때문에 , 개발의 프로세스에 대한 단순함 때문에 컨테이너를 사용한다.

 

 

 

 

클라우드도 microservice architecture 사용.. (도커와 컨테이너.) 삼성, 배민도 이를 사용.

쿠버네티스(도커 관리하는 용) : 도커를 잘 다룰 수 있는 기술이 많이 나왔는데 이를 전체적으로 아우르는 오케스트레이션 도구의 표준.

 

 

 

도커는 다양한 클라우드 서비스 모델과 같이 사용 가능.

- 이미지 : 필요한 프로그램과 라이브러리, 소스를 설치한 뒤 만든 하나의 파일.

- 컨테이너 : 이미지를 격리하여 독립된 공간에서 실행한 가상 환경.

PaaS : 운영체제, 런타임까지의 것들을 한꺼번에 자동화해서 배포할 수 있게 하는 시스템.

운영체제 까지 설치하는 가상환경이 필요하다 라고 하면 이미지를 불러오게 만드는게 도커의 역할.

애플리케이션(톰켓,파이썬,주피터노트북) , 운영체제 들을 빠르게 불러서 사용할 수 있는 것을 말함. 

 

ex. 나는 오늘 apm환경이 필요해! --> vm ware를 구성할 필요 없이 빠르게 다운받아서 쓸 수 있는 환경을 얘기함.

원하는 것을 빠르게 설치하고 빠르게 삭제하는 환경을 만들어준다. 

 

 

 

도커의 한계

서비스가 커지면 커질 수록 관리해야 하는 컨테이너의 양이 급격히 증가. 도커를 사용해 관리를 한다 하더라도 쉽지 않은 형태.

 

 

 

 

 

 

정리!

 

도커를 쓰는 이유: 도커는 매우 뛰어난 가상환경을 제공한다. 일반 애플리케이션에 돌아가는 것 만큼 성능을 제공하고 있으면서도 microservice를 제공할 수 있는 다양한 기능들을 제공하고있기 때문에 많이 사용하고 있다. 

원하는 서비스를 쉽고 빠르게 이용할 수 있다!

 

 

 

 

 

 

 

 

 

 

+ Recent posts