개발을 파헤치다/서버 인프라(23)
-
Docker 이미지 빌드시 선택적으로 Layer Caching 사용하기
DockerFile에서 이미지를 빌드하다 보면 수 많은 RUN 명령어를 사용하게 됩니다. RUN 명령어는 이미지 레이어를 만들게 되는데 이 이미지 레이어는 우리가 흔히 게임할 때 저장을 하는 세이브 포인트 역할을 합니다. 따라서 다음번에 Docker 이미지를 빌드할 때 해당 이미지를 Caching하여 사용합니다. 이는 빌드 시간을 단축시킵니다. 하지만 때때로 Cache를 사용하지 않고 명령을 수행해야 할 경우가 있습니다. 예를 들어, 원격 저장소에서 소스 코드를 받아와서 사용하는 경우 Caching된 이미지 레이어를 사용하는 경우 변경된 소스가 반영되지 않습니다. 이를 해결하기 위해 다음의 솔루션을 사용합니다. #DokerFile FROM centos/python-36-centos7 MAINTAINER ..
2018.07.23 -
AWS EC2에서 BitBucket으로 자동 배포 시스템(Auto Deployment) 구축하기
배포 프로세스 BitBucket 환경구축ssh key 생성하기cd ~/.ssh ssh-keygen -t rsa 위와 같이 명령어를 입력하면 key 파일 이름을 입력하라고 나옵니다. 용도에 맞게 적당히 키이름을 입력하면 passphrase를 입력하라고 나오는데 이 부분은 넘어가게 됩니다. 엔터 그리고 다시 엔터를 누르면 위와 같이 개인키와 공개키가 생성이 됩니다. 개인키는 EC2에서 BitBucket에 접속할 때 사용되고, Public Key는 서버측에 등록합니다. 위의 bitbucket_rsa.pub가 공개키입니다. 위 그림과 같이 BitBucket에 들어가서 Profile_setting에 갑니다. 그러면 Security 항목에 SSH keys관리하는 탭이 있는데 이곳을 클릭합니다. Add key를 눌러..
2018.07.17 -
AWS S3를 이용한 웹 페이지 호스팅 구축하기
Amazon Simple Storage Service란? 서비스를 런칭하게 되면 정말 무수한 데이터가 쏟아져 들어오게 됩니다. 이미지 저장만 해도 큰 용량을 차지할 수 있습니다. 자체 서버 구축(On-Premise)은 시간도 많이 걸릴 뿐더러 유지에도 상당한 노력이 들어가게 됩니다. 특히 데이터 백업, 데이터 분석, 데이터 배포등 정말 여러가지 신경 쓸 부분이 많은데 이것을 모두 자체 구현한다는 것은 사실 너무 힘든 일입니다. 그래서 Amazon에서 준비한 서비스가 바로 Amazon Simple Storage Service이죠. 수 많은 데이터가 들어오다 보면 서버가 다운되는 일은 흔하게 일어나죠. 서버 다운을 예측하기는 어렵기 때문에 그때 그때 개발자가 대처해야 한다면 이는 매우 비효율적입니다. 서비스..
2018.06.04 -
Docker 명령어 RUN / CMD / Entry Point의 차이점에 대해서
RUN / CMD / Entry Point 차이점 RUN RUN 명령어를 사용하면 명령을 실행한 결과가 새로운 Layer로 저장됩니다. 그리고 이 Layer는 베이스 이미지에 추가됩니다. RUN 명령어는 주로 새로운 패키지를 설치하거나 소스를 받아서 빌드한 경우 사용됩니다. Docker는 Container를 실행할 때 Docker Image가 필요합니다. 이 Image는 이미 존재하는 다른 Docker Image나 배포된 OS를 기반으로 만들어집니다. 베이스 이미지에 Docker 명령어를 가지고 자신에게 맞는 환경을 하나 하나 얹어가는 것입니다. RUN 명령어를 사용하여 새로운 패키지가 설치하거나 새로운 명령을 실행하는 경우 베이스 이미지에 내용이 더해지는데 이것을 Layer가 더해진다고 표현합니다. L..
2018.05.31 -
Docker가 등장하게 된 배경에 대해서
과거 서버 개발은 상당히 까다로운 작업이라고 할 수 있었습니다. 대부분의 서비스가 클라이언트와 서버로 구성되어 있다는 사실에 반문을 제기할 사람은 많지 않을 것입니다. IOS나 Android 혹은 Web같은 클라이언트가 상품을 판매하는 상점이라면 서버는 판매할 상품을 만들고 배송하는 공장이라고 할 수 있습니다. 만약 공장이 갑자기 문을 닫는다면 어떻게 될까요? 아무리 이쁘게 상점을 꾸며놓는다한들 상품이 없는 상점에 고객들은 오지 않을 것입니다. 서버가 중요한 이유는 위의 예시에 나와있는 내용과 같은 맥락입니다. 데이터베이스로부터 알맞은 데이터를 효율적으로 가져다가 클라이언트에서 볼 수 있는 양식으로 가공한 뒤 보내주는 것이 서버의 역할입니다. 매우 중요합니다. 서버 개발이 되려면 다양한 프로그램, 다양한..
2018.05.30