[AWS] EC2 & RDS 활용해 Django 서버 배포하기 (1)

민영·2023년 11월 15일
0

aws

목록 보기
1/4

이번 졸업프로젝트를 하면서 딥러닝 서버를 Ec2와 RDS를 활용하여 배포하였다. 그 과정과 공부한 내용들을 기록해 보았다. (참고로 3시간 쓴거 오류나서 다 날라갔다. 다시 쓰는 중 ㅜㅜ)

EC2 ( Elastic Compute Cloud)

ec2란 ?

  • 아마존 웹 서비스(AWS)에서 제공하는 클라우드 컴퓨팅 서비스
  • 클라우드 컴퓨팅은 인터넷(클라우드)을 통해 서버, 스토리지, 데이터베이스 등의 컴퓨팅 서비스를 제공하는 것이다.
  • 즉, aws로부터 가상의 컴퓨터를 한대 빌려오는 것.

ec2 서비스를 사용하면, 내가 만든 딥러닝 서버를 가상의 서버에 올리고, 외부에서 내가 생성한 서버에 접근할 수 있도록 할 수 있다.

먼저, ec2 인스턴스를 생성해보자!


인스턴스 생성으로 들어가, 인스턴스의 이름을 작성하고, 내가 빌린 가상의 컴퓨터가 사용할 os와 ami를 선택해준다.

AMI란 ?
컴퓨터를 사용하면 프로그램도 설치하고, 파일도 저장하고, 설정도 변경하게 되는데, 이 OS 상태 그대로 저장하는 기능을 이미지(AMI) 라고 한다.

프리티어가 사용할 수 있는 ami를 선택해주면 된다. SSD의 vloume타입, 64bit x86 cpu를 사용하는 ubuntu os를 선택한 셈이다.


그리고 나서 인스턴스 유형을 선택해주면 된다. 프리티어가 사용할 수 있는 기본적인 인스턴스 유형은 t2.micro이다. 이는 1GiB의 메모리를 제공하는데 매우 작은 ram을 지원한다.
나는 처음에 t2.micro를 선택하여 인스턴스를 생성하였는데, 서버가 자체가 구동이 안되고 터지는 문제가 발생했었다. 딥러닝 서버이기 때문에, 모델의 사이즈도 크고, 계산량도 매우 많은데 1GiB 램으로 돌리려다 보니 버티지 못하고 터진 것이다. (당연한 것을...)
그래서 이를 해결하기 위해 2가지 시도를 했었다.

1. swap space사용

-> ram크기의 2배가 되는 2GiB크기의 swap 공간을 두었다.
-> 속도가 매우매우매우 느렸다.
-> 서버 자체가 구동되기는 했다.
-> 그러나 api 호출을 받고 연산을 하면 서버가 죽어버렸다.
-> 이것으로는 해결이 불가능했다.

2. 더 큰 메모리를 가진 인스턴스를 할당받자.


-> 인스턴스 유형을 살펴보고, t2.micro 대신 t2.medium의 유형을 선택했다.
-> memory 는 4GiB 크기이다.
-> 서버도 구동되고, api 호출도 잘 처리를 했다.
-> 그러나 gpu도 아닌 cpu를 사용하고, 메모리 크기가 예전에 비해 커졌을 뿐, 여전히 작았기에 속도가 매우매우매우매우 느렸다.
-> 돈을 더 내고 인스턴스 유형을 업그레이드 해야할지 고려해봐한다.

key 페어를 설정해준다.
RSA 암호화 방식의 key pair를 .ppk 형식으로 생성했다. ppk형식으로 받으면 putty에서 사용할 수 있다.

  • ec2인스턴스에 접근할 때 key가 필요
  • 파일질라 접속할 때 key 필요
    (나의 경우 딥러닝 모델은 크기가 매우 커서 github를 통해 옮기는 것이 불가능해, 파일질라를 통해 로컬에서 직접 ec2 서버로 파일을 옮겼다.)
  • 한번 생성하면 같은 것으로 재생성도 안되고, 찾을 수도 없으니 잘 보관해놔야 한다.


다음과 같이 네트워크 설정을 해준다


그리고 네트워크 그룹 편집을 해서 api 통신을 위해 이를 추가해준다.


인스턴스가 할당받을 ssd(디스크)의 크기를 설정해준다. 볼륨 크기의 경우 인스턴스 할당 후에도 늘려줄 수 있지만, 번거로우니 넉넉하게 필요한 만큼 할당해주는 것이 좋은 것 같다.

모든 과정을 마쳤으면 인스턴스 생성을 눌러주면 생성이 완료된다.

profile
공부한 것을 기록하는 곳입니다 🖐

0개의 댓글