본문 바로가기

개발 관련/etc

[AWS&Docker 다뤄보기] 1. AWS와 Docker

devOps란?

devOps는 Development와 Operations의 합성어로, 2008년 애자일 컨퍼런스에서 "애자일 인프라스트럭쳐"에 대해 논의하며 처음으로 사용된 단어이다.

개발운영상호의존적으로 대응해야 한다는 말로, 개발과 운영 사이의 역할이라고 보면 된다.

또한, 소통, 협업, 통합 및 자동화를 강조하는 소프트웨어 개발 방법론으로 jira, confluence, bitbucket, jenkins, cloud server, docker 등이 이에 해당된다. 이 devOps의 등장으로 개발주기는 확연히 짧아졌다. 다음과 같은 이유 때문이다.

  • 속도

    배포까지의 빠른 작업속도를 효율적으로 제공해, 시장 변화에 빠르게 대처함

  • 빠른 배포

    새로운 릴리즈와 버그 픽스를 빠르게 배포하며, 그로 인해 고객 대응에 빠르게 대응 가능

  • 안정성

    지속적 통합, 전달, 모니터링, 로깅을 통해 안정적인 서비스 품질 제공

  • 확장 가능

    복잡하거나 변화하는 시스템을 효율적으로 관리 가능

  • 협업 강화

    개발자와 운영팀이 긴밀하게 협력할 수 있기 때문에 책임 공유 및 월크플로우 결합 가능. 때문에 비효율 줄이고 시간 절약 가능.

jira & confluence

프로젝트 개발 시작하기 전에, 계획과 디자인을 충분히 논의한 후 나온 업무 지시서를 바탕으로 개발 코드를 생성하게 된다.  

 

개발 프로세스

만약, 위와 같은 개발 프로세스 중 하나라도 빠진다면, 만든 프로그램은 구동이 잘 안되거나 유지보수가 힘들어질 것이다.

 

또한, 형상관리가 필요한 이유는, 같은 프로젝트에서 여러명이 동시에 작업할 수 있으며, 어떤 사람이 작업을 했는지, 또 어떤 점이 변경됐는지 트래킹이 가능하기 때문이다. 때문에, jira, bitbucket, jenkins 등을 사용하면 업무 자동화가 잘 이루어진다.

 

AWS와 Docker의 필요성

이제 본격적으로 AWS와 Docker에 대해 알아보자.

 

1. AWS란 무엇일까?

 

AWS란, Amazon Web Service의 약자다.

기존의 많은 회사들은 전통적으로 IDC(International Data Center)을 사용해왔다.

 

그렇다면 IDC란 무엇일까?

IDC란, 서버 컴퓨터와 네트워크 회선 등을 제공하는 시설로, 인터넷 연결의 핵심이 되는 서버를 한 곳에 모아 집중시킬 필요가 있을 때 설립한 시설을 말한다.

느껴지겠지만, 어마어마한 서버를 한 곳에 구축시킨 이 IDC를 관리하고 운영하는데 얼마나 큰 인력과 장소, 그리고 비용이 드는지 가늠이 되는가?

IDC를 관리하는데는 많은 인력이 필요하기도 하며 장소도 필요하다. 또, 정전 등으로 인해 서버가 멈추면 안되기 때문에 절대 정전되지 않도록 설계도 해야한다. 기존의 많은 회사들, 특히 대부분의 대기업들은 이렇게 직접 서버를 구축하거나 구매해서 올리는 식으로 진행되었다.

하지만, 점차 클라우드 서비스가 커지고 클라우스 서버 속도가 향상되면서 기업이 굳이 큰 자본을 들여 서버를 구축 및 유지해야하는 이유가 사라지면서 AWS의 중요도가 증대하게 되었다.

 

2. 그렇다면 Docker란 무엇일까.

 

도커란 컨테이너 기반의 오픈소스 가상화 플랫폼이다. 도커가 없어도 서비스를 올릴 수 있지만, 도커를 사용해 패키징을 하면 소프트웨어 제어가 훨씬 용이해서 많이 쓰이고 있다.

도커는 소프트웨어 제어에 용이할까?

서버를 세팅해 본 사람들은 느끼겠지만, 새로운 서버를 세팅하는 날에는 하루종일 서버 세팅으로 날리는 일이 많을 것이다. 하나의 서버에 여러가지 프로그램을 설치하는 것도 문제지만, 서로 사용하는 라이브러리의 버전이 다른 경우나 포트가 다른 경우엔 구글링을 해가면서 하나하나 문제를 해결했던 경험 다들 한번쯤은 있을 것이다. 이럴 때 도커가 등장한 것이다.

이 도커는 다양한 프로그램, 실행환경을 컨테이너로 추상화하고 동일한 인터페이스를 제공하여 프로그램의 배포 및 관리를 단순하게 해준다.

 

(나도 잘 모르기 때문에 해보면서 정리글을 더 올릴 생각이다.)

 

일단 devOps부터 docker의 대략적인 개념까지 알아보았다.

대충은 어떤 개념인지 알겠지만, 해봐야 더 정확히 와닿을 것 같다!

'개발 관련 > etc' 카테고리의 다른 글

vue.js webpack 설치  (0) 2020.02.16
용어 모음  (0) 2020.02.14
[CLion] MinGW 한글 깨짐  (0) 2019.11.27
[CleanCode] 10. 클래스  (0) 2019.11.24
[CleanCode] 9. 단위 테스트  (0) 2019.11.23