직접 처리하다.docker와 AWS(EC2+ALB+RDS)를 접하고 배운 것
너는 왜 이걸 하고 싶니?
한마디로 내 힘으로 WEB 서비스를 디자인한 경험을 해보고 싶었기 때문이다.
네트워크 엔지니어가 되기 전에는 사내 서비스 유지 운용을 주로 하기 때문에 물리적인 서버를 만들고 가상 기기 등을 제작했지만, 인프라 등은 이미 구성된 사내 네트워크에서만 접했다.
그래서 저는 웹 서비스를 외부에 공개하는 데 있어서 고려사항과 외부 연결 서비스에 필요한 지식이 부족하다고 생각합니다. 그래서 이 주제에 먼저 도전하고 싶습니다!!
토끼도 안 건드리고 뿔도 안 건드리면 시작도 안 해!다음 구성을 목표로 제목과 같이 Hazon 형식으로 학습한 내용을 총괄해 보겠습니다!
대상 이미지
Rails는 특별히 신경 쓰는 것이 아니라 간혹 응용 프로그램을 사용했을 뿐이다.최근에는ECS와Fargate를 사용하는구성이 많다는것을 알게 되어별도로도전해보고 싶어요!
🐳docker/docker-compose 편
처음 로컬로 제작된 기존 Rails 애플리케이션을 docker에 배치했습니다.docker를 배우고 싶어서 이를 계기로 컨테이너를 디버깅할 수 있다면 다른 응용 프로그램에서 효과적으로 활용할 수 있기를 바라기 때문에 docker화로 시작했습니다.
구현 내용
상세한 업무 내용 등은 잠시 언급하지 않지만, 대체로 아래와 같다.
docker-compose.yml 만들기
docker-compose는 여러 용기군의 구성과 동작을 관리할 수 있습니다.이른바 인프라 시설로 구성된 코드를 실현할 수 있다.
version: '3'
services:
app:
build:
context: .
environment:
MYSQL_ROOT_PASSWORD: XXX
MYSQL_DATABASE: XXX
command: bundle exec puma -C config/puma.rb
volumes:
- .:/app
- public-data:/app/public
- tmp-data:/app/tmp
- log-data:/app/log
depends_on:
- db
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: XXX
MYSQL_DATABASE: XXX
ports:
- "3306:3306"
web:
build:
context: containers/nginx
volumes:
- public-data:/app/public
- tmp-data:/app/tmp
ports:
- 80:80
depends_on:
- app
volumes:
public-data:
tmp-data:
log-data:
db-data:
docker-composie 명령build로 접근!
여기에 준비가 되면,build만 있으면 환경을 만들 수 있습니다.편리하게도 이 파일 그룹을 사용하면 같은 인프라가 한꺼번에 재현되네요~ 참 좋은 시대네요...(감개)
# コンテナを起動する
$ docker-compose build # コンテナをビルド
$ docker-compose up -d # コンテナの一斉起動
# railsの設定
$ docker-compose run --rm app rails db:create
$ docker-compose run --rm app rails db:migrate
여기까지 오면nginx를 통해 접근이 가능합니다!여기서 배운 거.
머릿속에서 이해가 된 줄 알았는데 보통 구축된 응용 프로그램 docker화를 통해 그 장점을 더욱 잘 알 수 있을 것 같아요!
그 전에 중간부품의 설치부터 설정된 환경 구축까지 몇 차례의 지령으로 재현해 냈으니 정말 감동적이다😂😂😂
앞으로 컨테이너로 다양하게 구축해 이해 깊게!!
🌥AWS 편
컨테이너화가 가능하기 때문에 디버깅 자체의 난이도가 거의 없어졌다.여기서부터 본환에 도전!
구현 내용
RDS 인스턴스 구축 및 연결 설정
RDS는 DB 엔진을 제공하는 서비스에서 DB 서버로 사용할 수 있습니다.솔직히 이 생성은 그리 어렵지 않았지만 Rails 응용 프로그램에서 이 DB에 연결된 설정을 직접 쓰는 것은 위험하기 때문에 credential로 숨겨진 설정을 했다.
# credentialsの設定
$ docker-compose run -e EDITOR="vim" app rails credentials:edit
# credentialsの中身
# ここに書いた内容は外から見ることはできません
rds:
host: RDSのエンドポイント
database: RDSの「データベースの名前」
username: RDSの「マスターユーザの名前」
password: RDSの「マスターパスワード」
production:
<<: *default
host: <%= Rails.application.credentials.rds[:host] %>
database: <%= Rails.application.credentials.rds[:database] %>
username: <%= Rails.application.credentials.rds[:username] %>
password: <%= Rails.application.credentials.rds[:password] %>
이렇게 하면 공식 환경의 연결 DB를 RDS로 설정할 수 있습니다.EC2 인스턴스 생성하기
EC2 실례는 ssh 연결을 할 수 있도록 설정되어 있으며 컨테이너를 시작하기 위해 docker와docker-compose를 설치했습니다.
그리고 나서🐳docker편에서 만든 응용 프로그램github부터 창고clone을 누르십시오.또한github에 존재하지 않는
master.key
를 config 파일로 개별적으로 복사합니다.만약 이렇게 하지 않는다면 방금 설정한credentials 내용을 참조할 수 없으니 주의하세요.$ scp -i ~/.ssh/myapp.pem ~/myapp/config/master.key
여기 도착하면 docker 시작 프로그램 시작합니다!$ docker-compose build
$ docker-compose run app rails db:create
$ docker-compose run app rails db:migrate
$ docker-compose run app rails assets:precompile
# nginxとpumaのソケット通信
$ mkdir tmp/sockets
$ touch tmp/sockets/puma.sock
# コンテナ起動
$ docker-compose up
IP 주소를 통해 웹 애플리케이션에 액세스할 수 있습니다!!!HTTPS화
마지막으로 ALB를 통해 EC2 + RDS로 구성된 응용 프로그램을 연결합니다.또한 ACM을 통해 인증서를 제작해 ALB로 설정하고, 외부→ALB의 통신은 HTTPS화(암호화)합니다. ※ALB와nginx는 같은 네트워크 안이기 때문에 HTTP 통신이 된다.
이렇게 하면 특정 영역에서 HTTPS화된 상태에서 웹 응용 프로그램에 접근할 수 있습니다-!!!
여기서 배운 거.
이번에는 거의 무료 프레임워크에서만 웹 애플리케이션을 SSL화한 다음 온라인에 공개합니다!!
실례의 생성과 부하 균형기가 이렇게 빨리 완성되는 것은 역시 대단하다.이번에는 한 대의 사양이지만 군더더기 사양 등 쉽게 구현할 수 있다는 실감이 들었다.
또 디자인은 단순히 EC2에서 창고를 복제한 것일 뿐이기 때문에 앞으로 CI를 진행하고 지이허브와 협업할 수 있어 비용이 많이 들지만 하고 싶은 것도 많이 봤고, 다른 서비스의 장점을 알기 위해 계속 접촉하고 싶다.
총결산
자신의 목적으로 WEB 서비스를 개발할 수 있고, 모르는 서비스와 인프라를 효율적으로 학습할 수 있는 기반 부분은 GOOD!
터치스크린으로 배우면 기술의 은혜를 더 많이 느낄 수 있다.한번 터치로 배우고 싶은 서비스와 영역을 넓히는 것도 좋은 수확이라고 생각한다.그리고 다양한 서비스가 있습니다. 저는 끊임없이 접촉하여 IT 해결의 범위를 늘리고 싶습니다!
아직 공부가 부족하고 매일 공부해야 하지만 저는 성실하게 노력할 것입니다!!
참고 자료
이것을 실시하기 위해서 아래의 보도를 참고하겠습니다.
docker-compose(공식)
지식 0에서 AWS의 EC2까지 웹 서버를 구축할 때까지
지나치게 섬세한 Docker compose를 통해 rails5+MySQL on Docker 환경 구축 (Docker for Mac)
Docker를 영입하기 위해 컨테이너의 장점을 설명한 설득자료
Nginx+Rails(Puma) on Docker의 몇 가지 유틸리티 모드
무료!가장 짧다?그리고 Ruby on Rails on Docker on AWS 앱을 공개한다.
통지하다
우리와 함께 활약할 우수 인재를 모집하고 있습니다.
관심 있는 사람은 반드시 참가해 주십시오파티 채택 페이지.
WEB 엔지니어 세부 정보 페이지 문의해주세요.
내일/내일
내일은 @2bo선생님의 보도입니다!
어떤 내용일지 기대됩니다~
Reference
이 문제에 관하여(직접 처리하다.docker와 AWS(EC2+ALB+RDS)를 접하고 배운 것), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/halkt/items/3dfdcb6c63e1023a2227텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)