AWS 상에서 컨테이너를 활용하여 클라우드 인프라를 더욱 효과적으로 사용하는 방법에 대하여 다룹니다. 컨테이너를 업무 환경에 적용하기 위해서 고려해야 할 사항이 많아 어렵게만 느껴지던 주제들을 간편한 실습 과제를 해보면서 어렵지 않게 적용 할 수 있게 구성된 워크샵입니다.
단순한 컨테이너 프로비저닝을 시작으로, 스팟 인스턴스를 활용한 컨테이너 배포와 사용량에 따른 인스턴스 최적화 및 어플리케이션 로드밸런서를 활용한 컨테이너 오케스트레이션 구성에 대해서도 실습해 볼 수 있습니다.
이를 통하여 컨테이너를 실제 업무에 적용함으로서 보다 유연하고 비용효율적인 클라우드 인프라를 구성할 수 있는 방법을 습득 하실 수 있습니다.
아마존 웹 서비스의 경우, 스타트업 부터 엔터프라이지까지 개발자 및 인프라 운영 엔지니어들이 주로 사용하는 것으로 알려져 있습니다. 하지만, 블로거로서 일반인들도 AWS 서비스를 유용하게 사용할 수 있습니다. 본 자료는 4주 완성으로 알파 사용자들이 아마존 웹 서비스를 활용하는 방법을 스터디 길잡이 입니다.
대상: 워드 프레스를 자체 서버로 블로그를 운영하려는 블로거, 포트폴리오 사이트를 운영하는 웹 디자이너, 클라우드를 통한 안정적인 소규모 워드프레스를 운영하려는 스타트업 등
얻을 수 있는 것:
1. 클라우드 컴퓨팅의 개념과 AWS 서비스에 대한 이해
2. AWS의 도메인 관리, 스토리지 및 동영상 인코등, 이메일 전송 서비스 활용 지식 습득
3. 복잡한 서버 운영 (콘솔 및 커맨드)과 DB 관리 없이도 안정적인 워드 프레스 운영 노하우 습득
주차별 스터디 내용:
<1주> AWS 소개 및 처음 할 일
1. 클라우드 컴퓨팅 및 AWS 서비스 소개
2. AWS 가입 및 빌링 알람 설정(CloudWatch)
3. AWS Activate 프로그램 가입 및 사용 방법
<2주> 서버 없이 웹 사이트 호스팅하기
1. S3에 파일 서버 구축하기(S3 지원 FTP 클라이언트 사용법)
2. AWS 사용자 및 크리덴셜 만들기(IAM)
3. S3에 정적 웹 사이트 운영하기
4. CloudFront로 콘텐츠 배포하기
5. 도메인 네임 관리 및 설정하기(Route53)
<3주> Elastic Beanstalk으로 워드프레스 운영하기
1. AWS 아키텍쳐 이해하기 (EC2/ELB/RDS/AutoScaling)
2. 5분만에 확장 가능한 워드프레스 구성하기(CloudFormation)
3. Elastic Beanstalk으로 워드프레스 운영하기
4. WordPress 로컬 서버 및 GIT 레포지터리 설치하기
<4주> 유용한 AWS 서비스 활용하기
1. Elastic Beanstalk 설정 및 배포하기
2. Elastic Transcoder를 통한 자동 동영상 인코딩 하기
3. SES를 통해 대용량 이메일 보내기
[17.01.19] docker introduction (Korean Version)Ildoo Kim
Docker(도커) 소개를 위해 사용했던 자료입니다.
제가 속한 개발팀에서는 도커 컨테이너를 기반으로 개발부터 배포까지 가능한 환경 및 인프라를 구축하여 개발팀에서 대다수의 오퍼레이션까지 관여하면서 Devops 형태로 운영합니다.
Docker(도커)를 처음 사용하거나 개념적으로 익숙하지 않은 초보를 위해 만든 자료입니다.
슬라이드에서 사용된 스크립트/코드는 아래에 있습니다.
https://github.com/ildoonet/docker_introduction
----
김일두, Software Engineer @ Kakao
Github : https://github.com/ildoonet
Linkedin : https://www.linkedin.com/in/ildoo-kim-56962034/
2. 왜 AWS를 선택했나?
갓준 : 뭔가 나도 서비스를 만들어 보고 싶어요.
ㅋㅋㅋ뭐라고?
서비스 만들려면 서버가 필요할텐데..
인프라 구축 지식은 있어?
서버개발쪽 지식은 있어?
리소스관리, 서비스 확장 어떻게 할작정?
갓준 : 아몰랑~~~ 암튼 그냥 후딱 하고 싶어요.
3. AWS?
Amazon Web Service의 약자로 흔히들 말하는 클라우드 컴퓨팅 서비스입니다.
여기서 클라우드 컴퓨팅 서비스란 ?
인터넷 기반(cloud)의 컴퓨팅(computing) 기술을 의미한다.
클라우드 컴퓨팅의 정의는 개인이 가진 단말기를 통해서는 주로 입/출력 작업만 이루어지고, 정보분
석 및 처리, 저장, 관리, 유통 등의 작업은 클라우드라고 불리는 제3의 공간에서 이루어지는 컴퓨팅
시스템 형태라고 할 수 있다.
4. 해석을 해보면… 이렇습니다.
1. 자사서버보다 유지비가 싸다.
2. 서버 설비를 위한 투자금이 필요없다.
3. 간단히 서비스에 맞춤형 운영을 할 수 있다.(운
영은 필요함.)
4. 서비스의 규모와 성장에 따른 용량을 유연하게
바꿀 수 있다.
5. 서비스의 속도가 빠르고, 민첩하게 확장을 할 수
있다.
6. 전세계 주요 지역(9개지역)을 중심으로 서비스
제공 가능.
AWS의 장점?
1. 유지비싸고,
2. 초기 투자금 필요없고,
3. 애플리케이션 운영도 필요없고,
4. 용량도 유연하고,
5. 속도도 빠르고 뭔가 민첩하며,
6. 글로벌 지원도 한답니다.
6. 실습
목표: EC2 서비스를 이용해서 간단히 API서버를 돌려보자.
AWS계정이 있다는 전제하에…
1. EC2 인스턴스 생성.
2. ssh를 이용한 EC2 접속.
3. 필요한 패키지 설치.(Apache, PHP, MySQL Server)
4. 아파치(웹서버) 설치확인
5. Remote 접속을 위한 MySQL서버에 유저추가.
6. MySQL 리모트 접근 설정
7. MySQL 유저 권한 부여/ 접속해보기
8. MySQL 리모트 접속후 데이터 저장
9. PHP로 데이터베이스의 정보를 Json으로 출력.
12. ssh를 이용한 EC2 접속
1.접속 클릭.
2.키페어 파일
권한 변경.
3.접속 커멘드 복사
13. ssh를 이용한 EC2 접속
1.키페어 폴더로 이동.
2.키페어 파일
권한 변경. 3.접속.
4.성공!!
14. 필요한 패키지 설치
1. Ubuntu패키지 업데이트
sudo apt-get update
sudo apt-get dist-upgrade
2. 아파치 설치
sudo apt-get install apache2
3. PHP5인스톨
sudo apt-get install libapache2-mod-php5
4. 아파치 재시작
sudo /etc/init.d/apache2 restart
5. MySQL 설치
sudo apt-get install mysql-server
sudo apt-get install php5-mysql
6. /var/www 권한 설정
sudo chmod 777 /etc/mysql/my.cnf
7. PHPMyAdmin설치
sudo apt-get install phpmyadmin
15. 아파치(웹서버) 설치확인
1. Apache(웹서버)가 설치가 완료가 되면 웹서비스를 할 수 있다는 것을 뜻합니다.
확인은 Instance정보의 publice IP를 브라우저 주소창에 쳐보세요.
아마 접속이 안될껍니다.
왜냐하면 생성한 Instance에 접근할 수 있는 port를 안열여 뒀기 때문입니다.
Security groups에 HTTP, HTTPS포트를 추가를 해주세요. (19페이지 참조.)
Security groups설정
17. Remote 접속을 위한 MySQL서버에 유저추가.
1. Ubuntu로 MySQL에 접속
mysql -u root -p
(패키지 설치시 입력한 root 패스워드 입력을 해야함. 성공하면 mysql> 로 바뀜.)
2. 데이터베이스 확인. 데이터베이스내의 테이블들 확인
mysql> show databases;
→ 설치된 MySQL내의 데이터베이스들이 보임.
mysql> use 데이터베이스명
→ 데이터베이스를 사용을 함.
mysql> show tables;
→ 사용한 데이터베이스내의 테이블들을 볼 수 있음.
3. mysql데이터베이스내 유저추가
mysql> use mysql;
mysql> create user
->‘유저이름’@‘%’ identified by ‘패스워드’;
예) ‘kimgibong’@‘%’ identified by `12345678`;
4. 테스트용 테이블 추가
mysql> CREATE TABLE Persons
-> (PersonID int primary key,
-> LastName varchar(255),
-> FirstName varchar(255),
-> Address varchar(255),
18. MySQL 리모트 접근 설정
1. MySQL my.cnf파일 설정 변경
ubuntu접속 후
vi /etc/mysql/my.cnf 입력
bind-address부분을 127.0.0.1을 0.0.0.0으로 변경 → 저장
(vi모드에서 i를 누르면 편집가능함.
저장은 esc키 후 :wq)
19. MySQL 리모트 접근 설정
2. EC2인스턴스에 접근 권한 주기(Security groups권
한 설정)
AWS의 좌측 메뉴중 Instances 선택 -> 해당 인스턴스의 Description -> Security groups 선택
해당 Security그룹의 Inbound탭 선택 -> Edit -> MySQL설정 -> Source는 Anywhere.
AnyWhere로 설정
20. MySQL 유저 권한 부여/ 접속해보기
1.MySQL서버에 생성한 유저가 접속할 수 있도록 권한을
부여합니다.
mysql> GRANT ALL PRIVILEGES ON *.* TO '유저이름'@'%' WITH GRANT OPTION;
예)GRANT ALL PRIVILEGES ON *.* TO 'kimgibong'@'%' WITH GRANT OPTION;
2. MySQL서버에 접속툴을 이용해 접속을 해봅시다.
접속할 수 있는 툴은 많습니다. 저는 MySQLWorkbench를 이용을 했습니다.
(https://www-jp.mysql.com/products/workbench/)
Public IP
Port
추가한 유저명
비밀번호를 입력
21. MySQL 리모트 접속후 데이터 저장
MySQL 리모트 접속이 되었으면 거의 다 온 것입니다.
mysql DB로 접속해서 이전에 만들어둔 Persons가 있는지 확인해봅시다.
있으면 적당히 데이터를 집어 넣습니다.
1.DB접속
2.이전에 만든 Person 테이블 확인
3.적당히 데이터 추가
입력시 주의!!
DB명, 테이블명 대소문자
구분함
commit;
으로 데이터를 반영해줘야함.
22. PHP로 데이터베이스의 정보를 Json으로 출력.
1.토렐로에서 다운 받은 JsonTest.php파일을 ubuntu의 /var/www/html폴더에
넣기. (전 FileZilla를 이용했습니다. ㅡㅡ?)
파일이 복사가 안되면 권한
이 없어서 그렇습니다.
sudo chmod 777 /var/www/html
로 권한을 할당해주세요.
23. PHP로 데이터베이스의 정보를 Json으로 출력.
2.접속정보 수정후 테스트를 해봅니다.
DB 접속정보 수정
public ip:port, 유저이름, 비번
24. PHP로 데이터베이스의 정보를 Json으로 출력.
2.접속정보 수정후 테스트를 해봅니다.
public ip/JsonTest.php
주의: 파일명 대소문자 구분.
출력이 된다면…
서..서성공입니다!!