Docker란? (도커의 등장)

고리·2022년 8월 7일
0

Docker

목록 보기
1/8
post-thumbnail

서버? 서버!

고객에게 서비스를 제공하기 위해서는 서버가 필요하다.

어떻게 하면 서버를 더 효율적이고, 편리하게, 안전하게 관리할 수 있을까?

그리고 위와 같은 관점에서 도커는 왜 나오게 되었을까?


On-premise

옛날 옛적엔 제공하는 서비스가 늘어나거나 사용량이 늘어 증설이 필요할 땐 서버를 한대 더 구매했다. 이렇게 서버의 구매, 설치, 운영을 기업이 직접하는 방식을 On-premise라 한다.

옛날 옛적의 On-premise 방식은 다음의 문제가 있었다.

  1. 정확히 동일한 서비스를 제공하기 위해 정확히 동일한 서버 설정을 해야하는데 여기에도 많은 자원이 들어가게 된다. 각 Directory의 용량 설정부터 종속성 관리, 방화벽 설정 등을 동일하게 해주어야 하는데 명령어를 통해 관리하다 보니 언제, 누가, 어떻게 했는지 관리하는 것이 굉장히 어렵고 복잡했다.
  1. 구매 보고서 작성 -> 보고서 승인 -> 서버 구매 → 서버 설치 → 하드웨어 조립 → 네트워크 연결 → OS 설치 → 방화벽 설정 등등 거쳐야 하는 과정이 너무 많다. 때문에 필요한 시점에 인프라를 바로 투입할 수 없게 되고 대응이 늦어져 회사에 경제적 손실이 생기기 시작한다.

1번을 해결하기 위해 등장한 것이 설정 관리 도구다.


설정 관리 도구의 등장


대표적으로 ANSIBLE(앤서블)이 있다.

수많은 서버들에 동시에, 동일한 환경을 배포하는 것이 현실적으로 많은 제약이 있었다.

이를 위한 고안된 것이 (Infrastructure as a Code)라는 개념이며, 이는 환경의 배포와 구성을 규격화된 코드로 정의해 사용하는 것을 의미한다.

이로서 인프라의 상태를 코드로 선언하고 이를 모든 서버에 배포함으로서 특정 환경을 동일하게 유지할 수 있도록 돕는다.

이 환경 설정 자동화 도구는 서버 관리자 한 명에게 모든 것을 일임 했던 과거에서 벗어나 협업과 코드 리뷰를 가능하게 했고 더 유연하고 즉각적인 변화가 가능해졌다.

하지만 "필요한 시점에 인프라를 바로 투입한다"라는 2번 문제를 해결할 순 없었다.


클라우드의 등장

클라우드 컴퓨팅은 사용자의 직접적인 관리 없이, 특히 데이터 스토리지(저장 공간)와 컴퓨팅 파워와 같은 컴퓨팅 시스템 리소스를 필요시 바로 제공(on-demand)하는 것을 말한다.

클라우드 컴퓨팅의 도입으로 여러 서비스를 제공하기 위해 요구되는 인프라를 필요한 시점에 필요한 만큼 투입할 수 있게 되었다.

하지만 회사들은 아직 만족하지 못했다. IT업계는 점점 더 빠르게 변하고 사람에게 들어가는 돈은 더 적게 쓰고싶다. 서비스는 빠르게 만들어지고 또 빠르게 폐기된다.
인프라를 필요한 시점에 필요한 만큼 투입한다 하더라도 각 인프라를 담당하는 전문 인력이 필요하고 이것 들은 모두 돈이다..!

결과적으로 서버 운영에 대한 문제는 자체 서버를 회사에 두고 사용한 On-premiss환경과 클라우드 환경이 동일했던 것이다.

그래서 등장한 것이 PaaS(Platform as a service)다.


PaaS의 등장

PaaS는 해당 프로그램과 관련된 인프라 또는 플랫폼을 구축하고 유지관리할 필요 없이 소비자로 하여금(회사, 개인) 자체 애플리케이션을 개발, 실행 및 관리할 수 있도록 해준다.

서버에 대한 상태를 알아서 관리해주기 때문에 이제 개발자들은 애플리케이션 개발에만 몰두할 수 있게 되었다.

하지만 이것도 만능은 아니었다. PaaS 서비스를 제공하는 플랫폼의 설정 만을 이용해야 했기 때문에 개발 환경의 자유도가 적었다. 서비스 사용자의 접근을 제한하기 때문에 사용자가 원하는 솔루션을 설정하지 못하게 된 것이다.

서버 및 미들웨어의 상세 설정을 할 수 없고 서버를 PaaS서비스에 의존하기 때문에 서버에 문제가 생길 경우 자체적인 대응 또한 어려웠다.


이렇게 여러 솔루션들이 완벽하지 않았다. 자체 서버는 비효율적이고, 설정 관리 도구는 인프라의 유연성이 부족하고, 클라우드는 서버관리의 문제를 해결하지 못했고, PaaS는 제약이 너무 많았다.

서버 설정을 자동화하고, 인프라를 유연하게 사용하고, 서버 관리의 효율성을 높이고, 서버에 대한 접근도 자유로운 방법은 없을까?

Docker의 등장


ref:
https://www.opentutorials.org/course/4200
https://blog.naver.com/alice_k106/221333208746
https://www.redhat.com/ko/topics/cloud-computing/what-is-paas
https://cloudtweaks.com/2014/12/paas-vs-docker-heated-debate

profile
Back-End Developer

0개의 댓글