🟨 목 차 🟨
1. 서버가 필요한 이유
2. 서버를 직접 구현하지 않고 빌리는 이유
3. 클라우드 서비스로 제공하는 것과 종류
4. 인스턴스와 EC2 란
5. AWS EC2 인스턴스 생성하기(서버 생성)
6. AWS EC2 인스턴스 생성(서버) 접속하기[터미널 이용]
◼️ 1. 서버가 필요한 이유 ◼️
내가 이해한 서버와 클라이언트에 대해서 말을 하자면,
서버란 네트워크에서 정보를 제공하는 컴퓨터를 말한다. 반대로 정보를 받아가는 컴퓨터를 클라이언트라고 부른다.
상식적으로 정보를 제공하는 컴퓨터(서버 컴퓨터)는 기본적으로 일년내내 켜져 있어야 하며 메모리나 디스크 상에 에러가 발생해도 다운되어도 안된다.
그래서 서버 컴퓨터(서버)는 무장애 특징이 있고 전원을 켜둔채로 하드 디스크를 교체 가능하며, 실시간으로 디스크를 백업해도 느려지지 않는 등 복잡한 기능들이 많다. 또한 서버 컴퓨터는 "Multi User Multi Tasking"을 기본으로 설계된다. 참고로 일반 컴퓨터는 "1 Uswer Multi Tasking"으로 설계된다. 서버 컴퓨터의 "Multi User Multi Tasking" 의 참 뜻 은 계정이 여러개인 것과는 별개로 여러 명이 동시에 접속해도 느려지지 않는다는 말이다. 즉, OS가 다른 유저의 메모리나 CPU 사용을 간섭하지 않도록 지원한다는 얘기다.
즉, 다시 말해서 많은 사람들의 데이터를 안전하게 관리를 해주며 다른 유저의 메모리나 CPU 사용 관섭이 없고 24시간 내내 켜져야 하는 서버 컴퓨터가 필요하여 서버란 것이 필요한 것이다. 또한 개인 컴퓨터의 용도가 아닌, 여러 다른 장치와 함께 동작하며, 해당 장치를 사용하는 사용자나 프로그램에 필요한 서비스를 제공하기 위해 사용 되는 것이다.
◼️ 2. 서버를 직접 구현하지 않고 빌리는 이유 ◼️
서버를 직접 구현하는 것보다 서버를 전문적으로 취급하는 회사가 자신들의 회사에 있는 서버(서버 컴퓨터)를 빌려주고 그에 상응하는 비용을 거둬들이는 것이 서버를 빌려주는 회사는 금전적 이득 서버를 빌리는 회사는 효율성, 데이터 보안, 합리적인 비용 지불, 전략적 가치(정기적인 업데이트로 인한), 유연성을 얻어 두 회사 둘 다 이득을 취하는 구조인 것이다. 이렇게 서버를 빌려주고 빌리고 하는 서비스를 클라우드 컴퓨팅 이라고 한다. 즉, 클라우드 컴퓨팅은 인터넷으로 가상화된 IT리소스를 서비스로 제공하는 것을 의미한다.
◼️ 3. 클라우드 서비스로 제공하는 것과 종류 ◼️
클라우드 서비스는 인터넷을 통해 단순히 서버 장비를 대여하는 것 뿐만 아니라 로그 관리, 모니터링, 네트워크 관리, 플랫폼, 소프트웨어 등 컴퓨팅 서비스를 제공한다.
클라우드 서비스로 제공하는 종류는 아래와 같이 크게 3가지로 나뉜다.
- IaaS : 서비스로 제공하는 인프라스트럭처
[ 클라우드 인프라스트럭처 서비스는 확장성이 높고 자동화된 컴퓨팅 리소스(가상머신, 스토리지, 네트워크 등 )를 가상화하여 제공하는 것 Ex) AWS의 EC2, Microsoft Azure ] - PaaS : 서비스로 제공하는 플랫폼
[ 클라우드 플랫폼 서비스는 주로 응용 프로그램을 개발 할 때 필요한 플랫폼을 제공하는 것이다. IaaS를 한번 더 추상화한 서비스이며, 개발자 운영체제, 인프라에 대한 관리 없이 소프트웨어 개발에 집중 할 수 있다. 하지만 특정 플랫폼 서비스에 종속될 수 있다는 단점이 있다. Ex) AWS의 Beanstalck, Window Azurem Herok - SaaS : 서비스로 제공하는 소프트웨어
[ 클라우드 앱(소프트웨어) 서비스는 사용자에게 제공되는 소프트웨어를 가상화하여 제공하는 것이다. SaaS는 타사 공급 업체가 관리하는 사용자에게 응용 프로그램을 제공하기 위해 인터넷을 제공하기 위해 인터넷을 사용하며 대부분의 SaaS 앱 웹 브라우저를 통해 직접 실행되므로 클라이언트 측에서 다운로드나 설치가 필요하지 않다. 모든 기술적인 부분은 SaaS에서 담당하기 때문에 비지니스에만 집 중 할 수 있지만, 커스터 마이징(공업 생산자나 수공업자가 손님들이 청하는 것에 따라 제품을 만들어주는 일종의 맞춤 제작 서비스)이 어렵다는 단점이 있다. Ex) 구글 드라이브, 드랍박스 ]
◼️ 4. 인스턴스와 EC2 란 ◼️
인스턴스란 클라우드의 가상 서버이다.
EC2란 AWS에서 제공하는 클라우드 컴퓨팅 서비스이다.
EC2를 통해서 아마존이 각 세계에 구축한 데이터 센터의 서버용 컴퓨터들의 자원을 원격으로 사용할 수 있다. 쉽게 말해, 아마존으로 부터 한 대의 컴퓨터를 임대하는 것이다. AWS가 제공하는 URL(Public DNS)를 통해 이 컴퓨터에 접근할 수 있다.
EC2의 장점
- 용량을 늘리거나 줄일 수 있다.(탄력성)
- 사용한 만큼 지불하여 저렴하다.
- 사용자가 인스턴스를 완전히 제어 가능하다.
- 보안 및 네트워크 구성,스토리지 관리 효과적이다.
◼️ 5. AWS EC2 인스턴스 생성하기(서버 생성) ◼️
[ 나의 환경은 M1 맥북 Pro를 사용하고 있다. 추후에 서버 접속을 하기 위한 도구로서 맥북 자체이 있는 터미널을 사용하였다. ]
AWS EC2 인스턴스 생성하기(서버 생성)
1. 회원 가입 및 로그인 하기
2. 우측 상단에 있는 리전(AWS의 서비스가 구동될 지역)을 서울 리전으로 선택한다.
3. 서비스 > EC2 에 들어와서 인스턴스 시작버튼을 클릭한다.
4. 인스턴스 시작 버튼을 통해 들어온 창에서 AMI 선택(Ubuntu)을 한다
[ AMI란 EC2 인스턴스를 시작하는데 필요한 정보를 이미지로 만들어 둔 것, 인스턴스라는 가상머신에 운영체제 등을 설치할 수 있게 구워 넣은 이미지 , Macos가 새로 출시되었지만, 나는 가장 호환이 잘되는 Ubuntu를 선택했음.]
5. 스토리지 추가 - 크기(8G)를 프리티어 최고 용량인 30G로 바꿔준다.
6.태그 추가
[ 웹 콘솔에서 표기될 태그인 Name 태그를 등록하고, 태그는 해당 인스턴스를 표현하는 여러 이름으로 사용될 수 있다. 즉, EC2의 이름을 붙인다고 생각하면 된다. [ex] 인스타그래, 페이스북 등의 sis 태그와 동일한 역할 ]
7. 보안 그룹 구성(방화벽)
[ 보안을 위해 SSH유형은 내 IP로만 접근 가능하게 하며(만약 본인의 IP 및 다른 프로젝트 인원의 IP 설정이 필요하다면, 해당 장소의 IP를 다시 SSH 규칙에 추가한다.), 프로젝트 기본 포트는 8080추가, HTTPS는 443 포트를 추가하고 검토 및 시작 버튼을 클릭한다. 만약 인스턴스를 보안을 개선하라는 경고 메세지가 나온다면 이것은 8080이 전체 오픈되어서 발생하는 메세지로 8080을 열어놓는 것은 위험한 일이 아니므로 그냥 무시해도 된다. ]
8. 키페어 선택 / 생성 > 키 페어 다운로드
[ 키 이름을 입력하고 , RSA 형식 클릭 , .pem형식 을 클릭하고 생성을 한다. 여기서 pem키(비밀키)란 EC2 인스턴스로 접근하기 위한 키이다.
이것은 마스터키 이기 때문에 절대로 유출되며 안되고 추후에 /~.ssh 디렉토리에 넣어야하는 키이다. ]
9. 인스턴스 생성을 클릭하여 인스턴스를 생성한다.
[ 생성된 인스턴스는 EC2 인스턴스 좌측 카테고리 > 인스턴스 에 들어가면 확인 할 수 있다. ]
10. 고정 IP(탄력적 IP = Elastic IP) 설정
[ 인스턴스도 하나의 서버이기 때문에 IP가 존재한다. 인스턴스 생성 시 항상 새로운 IP를 할당하는데, 추가적으로 동일한 인스턴스를 중지하고 다시 시작할 때도 새로운 IP가 할당된다. 이렇게 되면 매번 접속해야 하는 IP가 변경돼서 PC에서 접근할 때마다 IP의 주소를 확인해야 하는 번거로운 과정이 있다. 그래서 인스턴스의 IP가 중지하거나 다시 시작할 때 매번 변경되지 않고 고정적인 IP(탄력적 IP)를 가지게 해야한다.
이 기능이 고정 IP이다.
10-1. EC2 인스턴스 좌측 카테고리 > 탄력적 IP 클릭 > 탄력적 IP 주소 할당
10-2. 작업 > 탄력적 IP 주소 연결 클릭
10-3. 인스턴스 및 프라이빗 IP 주소를 선택 > 연결 클릭
[ 탄력적 IP주소를 생성만 하고 연결이 되어 있지 않은 경우에 매달 소량의 비용이 청구된다. 따라서 생성한 탄력적 IP는 반드시 연결을 해주어야 하며, 사용하지 않는다면 반드시 삭제를 해주어야 한다! ]
11. 탄력적 IP 확인하기
◼️ 6. AWS EC2 인스턴스 생성(서버) 접속하기[터미널 이용] ◼️
[ 나의 환경은 M1 맥북 Pro를 사용하고 있다. 추후에 서버 접속을 하기 위한 도구로서 맥북 자체이 있는 터미널을 사용하였다. ]
1. 이전에 생성된 key가 있는지 확인하기
[ 터미널에 cat ~/.ssh/id_rsa.pub 입력하기 만약 생성한 적이 없으면 NO such file or directory 라고 뜬다. ]
2. 키 생성하기
[ 터미널에 ssh-keygen 입력을 하고 어느 파일에 키를 저장할지, 비밀번호는 무엇으로 할 지를 정한다. 따로 설정하지 않고 엔터를 쳐서 넘긴다. 그러면 키가 생성되는데 기본 위치는 /Users/본인 컴퓨터명/.ssh 위치에 파일이 생성된다.
터미널에 cat ~/.ssh/id_rsa.pub 을 입력하면 생성된 키를 확인 할 수 있다.]
3. AWS 인스턴스 생성 시 받은 pem 파일 복사 및 설정
3-1. 해당 pem파일을 ~/.ssh 경로에 복사를 한다.
[ ~/.ssh 디렉토리에 복사하는 이유는 이유는, 이후 실행 시 pem 키 파일을 자동으로 읽어 접속이 가능하게 하기 위해서이다.
터미널에 cp pem키의 경로/pem키의 파일명 ~/.ssh/ 로 복사한다. 복사 후에 cd ~/.ssh로 이동 후 정상적으로 복사 되었는지 확인한다. ]
3-2. Chmod 600 pem 키의 파일명을 입력하여 권한을 변경한다.
[터미널에 chmod 600 pem키의 파일명 을 입력하여 권한을 변경한다.]
3-3. 권한 변경 후에 pem키가 있는 디렉토리에서 config 파일을 생성 한 후 아래와 같이 작성한다.
[ 터미널에 vim config을 입력한다. Vim 창에서,
Host "아무 이름 입력" (앞으로 접속할 키 값)
HostName "탄력적 IP 주소 입력" (EC2의 탄력적 IP 주소를 입력하면 된다.)
User "유저의 이름을 입력" (ubuntu를 사용하므로 ubuntu라고 작성해줬다.)
IdentityFile "pem키가 존재하는 디렉토리/파일명 입력" (pem키가 존재하는 디렉토리/파일명을 작성하면 된다.)
이렇게 입력을 하고 esc 누르고 :wq 를 입력하고 엔터를 누른다(저장)
3-4. config 파일의 권한을 수정
[ chmod 700 config ]
4. ssh로 AWS EC2 서버에 접속하기
[터미널에 ssh "Host에 설정한 이름으로 접속"
[ex] ssh online ] 을 입력하면 서버에 성공적으로 접속한다.
많은 블로그를 찾아보았는데, 환경도 m1 맥북이면서 글이 잘 정리된 이분의 블로그를 많이 참고 하였습니다.
[ 참고 : https://zzang9ha.tistory.com/338?category=999709 ]