2024. 4. 10.
목차
배운 내용 정리
배포
지금까지 실습했던 Django 프로젝트는 자신의 컴퓨터(localhost)에서 실행되었다. 실제 서비스같이 작동시키려면 외부에 공개해야한다. 이것이 배포(deploy) 이다.
배포에는 두가지 방법이 있다.
- 서버 컴퓨터를 직접 운영 (물리 서버, 온프레미스)
- 외부 전문 서버를 이용 (클라우드)
서버 컴퓨터를 직접 운영하고 관리하는 것은 개인이 하기엔 매우 난이도가 높으므로, 보통 클라우드 컴퓨팅 서비스를 이용해 배포를 진행한다.
SSH
컴퓨터와 컴퓨터가 인터넷과 같은 Public Network를 통해 서로 통신을 할 때 보안적으로 안전하게 통신을 하기 위해 사용하는 프로토콜이다.
SSH 키(Key)는 공개키(public key) 와 비공개키(private key) 로 이루어지며 키를 생성하면 공개키와 비공개키가 만들어진다.
이 중에 비공개키는 로컬 머신에 위치해야 하고, 공개키는 리모트 머신에 위치해야 한다.
SSH 접속을 시도하면 SSH Client가 로컬 머신의 비공개키와 리모트 머신의 공개키를 비교해서 두 키가 일치하는 지를 확인하게 된다.
EC2
EC2의 핵심 기능
- 가상 서버 인스턴스
- 사용자는 원하는 수의 가상 서버(EC2 인스턴스)를 생성하고 구성할 수 있다.
- 스케일링
- EC2는 사용량에 따라 컴퓨팅 리소스를 자동으로 확장하거나 축소할 수 있는 기능을 제공한다. 이를 통해 트래픽 급증 시에도 안정적인 서비스 운영이 가능하다.
EC2의 장점
- 비용 효율성
- 사용한 만큼만 비용을 지불하는 구조로, 불필요한 하드웨어 투자 없이 비용을 절감할 수 있다.
- 유연성과 확장성
- 다양한 인스턴스 유형과 크기를 제공하여, 각 애플리케이션의 요구 사항에 맞는 리소스를 선택할 수 있다. 또한, 필요에 따라 리소스를 즉시 확장하거나 축소할 수 있어 유연한 인프라 운영이 가능하다.
후기
오늘 세션에서는 배포를 체험하기 위해 AWS에 직접 인스턴스를 만들고 지금까지 만든 Django 서버를 올려보았다.
다만 순탄치는 않은 세션이었는데, 원래대로라면 AWS 프리티어로 인해 인스턴스를 작동시켜도 1년간은 공짜로 돌릴 수 있었지만 이미 만들어졌고 사용하고 있었던 내 AWS 계정은 만든지 1년이 훨씬 넘었기 떄문에 프리티어 혜택은 전부 날라가버린 상태였다. 그야말로 프리티없…
일단 만든지 1시간 이내라면 과금은 안된다고 해서 세션 중간부터 재빠르게 새로 만든 EC2 인스턴스를 지우고 원래 사용하고 있던 오라클 클라우드 서버를 사용하게 되었다. (갓갓 오라클 찬양해)
다만 내 오라클 서버는 대부분의 포트가 닫혀있었기 때문에 방화벽 설정을 건드려야 했다.
웹페이지에서 방화벽을 여는 것은 세션에서 AWS로 강의했던 절차와 거의 같았지만 오라클 클라우드 서버는 내부 인스턴스 OS 자체에 방화벽이 2차로 깔려있었다. 이때문에 시간을 좀 많이 소모했었다.
오라클 인스턴스는 방화벽으로 iptables를 사용하는데, 다음과 같은 작업을 해줘야 한다.
# 8000 포트 열기
$ sudo iptables -I INPUT 1 -p tcp --dport 8000 -j ACCEPT
# 설정 저장
$ service iptables save
# 재시작하여 적용
$ service iptables restart
이렇게 OS의 방화벽까지 설정하면 8000 포트로 서버에 접근할 수 있게 된다.