[AWS? Docker?] Fassen Sie die erforderlichen Kenntnisse in Ihrem Portfolio auf leicht verständliche Weise zusammen. [Terraform? CircleCI?]

Beim Schreiben dieses Artikels

Hallo. Erstellen Sie ein Portfolio? Diejenigen, die jetzt ein modernes, wahnsinnig hochwertiges Portfolio erstellen und der Meinung sind, dass dies getan werden sollte. Diejenigen, die ungeduldig sind, weil Docker, AWS, Terraform und CircleCI als allgemeines Wissen der Ingenieure behandelt werden.

** Ich verstehe wirklich. ** ** **

Obwohl ich als Ingenieur lebe, war ich ehrlich gesagt ungeduldig, weil ich nichts davon verstand. Leute, die sagen ** "AWS ist so ~ w" "Terraform am besten w" **, natürlich, ich dachte, es wäre wirklich ein Genie.

Ich habe ein Portfolio gemacht! Es gibt einen Artikel wie diesen, aber es ist wirklich erstaunlich! Es ist ein Artikel, der sich anfühlt, als würde man ihn erstellen, im Gegenteil, es ist ein sehr schwieriger Artikel, oder es ist ein Artikel, der für sich leicht zu verstehen ist, aber ich verstehe ihn nicht umfassend.

** Was ist Terraform? Wo benutzt du Docker? Es heißt AWS, aber was verwenden Sie eigentlich? ** ** **

Als junger Ingenieur voller solcher Fragen dachte ich, ich würde mich freuen, wenn ich so etwas hätte, und beschloss, eine Rezension des Artikels zu schreiben.

Wenn Sie nicht wirklich verstehen, wissen Sie nicht, wo Sie anfangen sollen oder wie Sie suchen sollen.

Nächste Arbeit → Erstellen einer modernen und entwicklungsfertigen Entwicklungsumgebung mit Rails, Nuxt und CircleCI (Einführung)

Vorstellen

Ein gewöhnlicher Ingenieur. Es gab viele Serverseiten in Java und PHP, und dort lebte Javascript. Dies war mein erstes Wissen, das ich noch nie erlebt hatte, und ich versuchte herauszufinden, wie viel ich tun konnte. Die Produktionsdauer beträgt wahrscheinlich weniger als ein halbes Jahr.

Die Sprache ist Ruby (Rails) /Vue.js (Nuxt.js) → Rails wird unterwegs von 5.2 auf 6.0.3 aktualisiert Docker / Docker Compose / nginx / openssl / MySQL / Vagrant in der Entwicklungsumgebung AWS / ECS / ECR / CircleCI / Terraform in der Produktionsumgebung Ich habe ein solches Portfolio mit erstellt.

Hauptfunktion 飲食店サーチ動画.gif

Benutzer-Tagging / Suche プロフィール画面・ユーザタグ検索.gif

Kommentar コメント・削除機能.gif

Empfehlungen von Favoriten / Besuchen / Follow-ups お気に入り・訪問機能.gif

etc

Ziele für diesen Artikel

** Verwenden von Rails auf der Serverseite und Nuxt.js auf dem Frontend, Verschieben Sie CircleCI automatisch, wenn Sie auf Git drücken Image-Push an AWS ECR mit Terraform-codierter Infrastruktur Bereitstellung in der Produktion mit ECS. ** ** **

Um die Komposition zu erstellen, ist das notwendige Wissen leicht zu verstehen Ich kann es mir irgendwie in meinem Gehirn vorstellen.

Hinweis

Ich selbst bin nicht sehr zuversichtlich, da es sich um eine Infrastrukturkonfiguration / App handelt, die ich mir unerfahren ausgedacht habe. Ich denke, es gibt eine viel bessere und bessere Komposition. Ich hoffe, Sie können dies als Beispiel nehmen. Ich würde gerne wissen, ob es etwas gibt, das normalerweise sagt "das ist anders".

Es wird wahnsinnig lang sein. Gehen Sie zu dem Teil, den Sie suchen!

Gesamtzusammensetzung

Qiita用インフラ構成.png

Erläuterung

Es ist ein Fluss geworden.

Verstehe nicht plötzlich ... Ich werde mein Bestes geben, um jeden zu erklären.

A. In der Entwicklungsumgebung verwendete Technologie

Docker  Rails oder eine virtuelle Maschine zum Ausführen von node.js. Wie Sie im Logo sehen können, ist es wie ein Wal, der einen Container auf dem Schiff trägt.

dockerlogo.png

Wenn Sie es erzwingen, ist es wie ein festes Essen. Auf dem Tablett werden Essstäbchen, Teller, Handwischtücher und Geschirr serviert.

Docker wird als ** "Container" ** und ** "Image" ** bezeichnet. ** Bild ** ist im obigen Beispiel wie ein Teller, ein Essstäbchen oder ein Handwischtuch. Es wird auch durch Servieren von Reis hergestellt. Ein ** Behälter ** ist wie ein Tablett zum Aufstellen.

** Image ** ist MySQL, Ruby, node.js usw. Sie können das Bild auch erstellen, indem Sie den Quellcode kneten. ** Container ** ist ein Betriebssystem, das ein Image enthält (centOS, Linux, alpine usw.) Das Betriebssystem ist Mac oder Windows.

DockerCompose Ein Tool zum Orchestrieren des oben genannten Docker ** -Containers **. Zum Beispiel ist das Bild wie eine süße Kellnerin, die zu jedem Tisch ein festes Essen mit Essen bringt. Das Logo von Mr. Taco von Docker Compose ist das Bild davon.

Angenommen, Sie haben MySQL / Rails / Nuxt Docker-Container, starten Sie diese gleichzeitig Darüber hinaus können Sie jeden dieser Ports festlegen und die Befehlseinstellungen beim Start mit einer Datei namens docker-compose.yml verwalten. Wenn Sie diese drei mit Docker ausführen, müssen Sie jeden Docker-Container einzeln starten, was unpraktisch ist. Docker Compose kann solche Probleme lösen.

68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139313330342f62343162396562362d316663342d373433622d383863302d6635346638633763656532342e706e67.png

MySQL Es ist eine Datenbank. Wenn Sie beispielsweise eine Notizblock-App erstellen möchten, speichern Sie den Titel und den Inhalt des Notizblocks.

B. github Hier können Sie den Code speichern, den Sie hart geschrieben haben. Jedes Mal, wenn ich es aktualisiere, bleibt der Verlauf bestehen und ich habe einen Fehler gemacht! Es ist sicher, auch wenn man sagt. Sie können es sofort zurückgeben. Sie können sehen, wie Sie es an einem Tag verwenden können, indem Sie Einführung in Monkey-senseis Git-Let's Master-Versionsverwaltung lesen.

C. CircleCI Wenn Sie ein modernes, intern entwickeltes Unternehmen sind, wird es mit hoher Wahrscheinlichkeit eingeführt. Saas Typ CI / CD-Dienst.

** CI steht für Continuous Integration. Dies wird als "kontinuierliche Integration" bezeichnet. ** ** ** Integration = Integration, Der Punkt ist, lassen Sie uns kontinuierlich "integrieren" und testen.

** CD steht für Continuous Delivery oder Deployment. Es wird als "kontinuierliche Lieferung / Bereitstellung" bezeichnet. ** ** ** Lieferung = Bezieht sich auf die Bereitstellung in der Produktionsumgebung. Der Punkt ist, lassen Sie es fortlaufend "bereitstellbar" halten.

CircleCI ist ein Dienst, der diese in Zusammenarbeit mit dem oben genannten Github ausführen kann. Es ist erstaunlich, Circle CI! Um es einfach auszudrücken: Wenn Sie es in Github speichern, führen Sie den Integrationstest ohne Erlaubnis durch und stellen es ohne Erlaubnis bereit? Es ist ein super Werkzeug. Jedoch,

Führen Sie den Integrationstest ohne Erlaubnis durch und stellen Sie ihn ohne Erlaubnis bereit?

Sie müssen diesen Teil selbst einstellen. Es ist wirklich schwer zu wissen. Hah. Krank. Die Einstellungen werden in der yml-Datei gelesen. Sie können es verwenden, indem Sie CircleCI mit dem Github-Repository verknüpfen und seine yml-Datei hochladen. Es ist etwas nervig, aber was in CircleCI ausgeführt wird, ist gleichbedeutend mit dem Befehl, der in der Befehlszeile ausgeführt wird. Wenn Sie beispielsweise einen Test von rspec auf den Punkt bringen möchten, geben Sie einen Befehl wie "bundle exec rspec" in yml ein.

Hmmm, Sie können einen Befehl schreiben, der in der Befehlszeile im yml-Format ausgeführt werden kann. Es scheint also relativ einfach zu sein, nicht wahr? Lass uns bequem gehen!

Referenz: Ich habe gerade CircleCI gestartet und es daher leicht verständlich zusammengefasst

D. ECR ECR, die nicht leicht unerwartet gekaut werden kann. ECR steht für ** Elastic Container Registry **.

** Elastisch ** = Wird häufig in AWS-Diensten gefunden. Bedeutung "flexibel". ** Container ** = Sie haben bereits in der Erklärung von Docker erwähnt. Ja, es ist Obon. ** Registrierung ** = bedeutet "Registrierung".

Kurz gesagt, ** Sie können Bilder (festgelegte Mahlzeiten) flexibel in Behältern (Obon) registrieren! ** Bedienung. In ECR gibt es eine Einheit, die als Repository bezeichnet wird, und Bilder können dort registriert werden.

Befolgen Sie kurz das Verfahren am Beispiel einer festgelegten Mahlzeit.

--Schreiben Sie den Quellcode. (Reis machen.)

Hier können Sie Bilder sowohl in Kaninchen als auch in Ecken speichern. Es fühlt sich an wie ein Kühlschrank. Ich werde ECS verwenden, um zu kinn und zu essen!

E. ECS Dies wird auch nicht sehr kurz erklärt. Das Leben ist nicht süß. ECS steht für ** Elastic Container Service **.

** Elastisch ** = weggelassen ** Container ** = weggelassen ** Service ** = Zu vage

Ich bin nicht sicher, ob es zerlegt ist. Einfach ausgedrückt handelt es sich um ein ** Orchestrierungswerkzeug ähnlich dem ** Docker Compose. Starten Sie den Server mit dem in ECR registrierten Image.

Nun, ich habe Docker und Docker Compose in der Entwicklungsumgebung verwendet, aber ich verwende ECR und ECS in der Produktionsumgebung. In AWS hat es auf coole Weise drei Buchstaben, aber im Grunde ändert sich an der Struktur nicht viel. (Ich denke, es ist anders, wenn Sie genau hinschauen) Verwenden Sie das Image und führen Sie es mit einem Orchestrierungswerkzeug aus.

ECS ist nicht so einfach wie ECR und ein komplexes Rätsel, daher werde ich es später langsam erklären. Zunächst ist es wichtig, sich das ganze Bild vorstellen zu können! Ich denke, es ist gut, die Details später zu kennen.

Referenz: Anordnung der Konzepte für Amazon EC2 Container Service (ECS)

F. Nuxt.js Dies ist ein progressives Framework, das auf Vue.js basiert, das auf der Vorderseite verwendet wird. Hier implementieren wir mithilfe der API einen Bildschirm, der die Kommunikation mit der Serverseite ermöglicht und den der Benutzer direkt berühren kann.

G. Ruby on Rails Dies ist das Ruby-Framework, das diesmal auf der Serverseite verwendet wird. Hier wird die API-Anfrage von vorne akzeptiert und die Antwort im JSON-Format zurückgegeben. Es kommuniziert auch mit der Datenbank.

H. ALB ALB steht für ** Application Load Balancer **. Es sortiert den Zugriff auf Anwendungen (Nuxt, Rails usw.) gut. Wenn der Zugriff auf eine Instanz konzentriert ist und er ausfällt und Sie mehrere Instanzen erstellen, werden Anforderungen automatisch an diese Instanz gesendet. Einfach gesagt, es fühlt sich an wie eine ältere Schwester in einem super tollen Callcenter.

"Ich werde mich mit der ●● Abteilung verbinden ..."

Was ist los mit ELB? Das habe ich mir gedacht. ELB scheint ein allgemeiner Begriff zu sein, der ALB, CLB und NLB umfasst. (Ursprünglich sieht es anders aus, siehe unten)

ELB ist eine Abkürzung für "Elastic Load Balancing", das ursprünglich ein Lastausgleichsdienst in AWS war. Wenn ALB jedoch später als zusätzliche Option entwickelt wurde, änderte ELB seinen Namen in "Classic Load Balancer (CLB)". Und ELB wurde als allgemeiner Begriff für die Dienste von ALB und CLB verwendet. Darüber hinaus wurde jetzt Network Load Balancer (NLB) hinzugefügt und sein Inhalt weiter verbessert. Mit anderen Worten, ELB ist ein allgemeiner Begriff für AWS-Lastausgleichsdienste mit drei attraktiven Lastausgleichsdiensten: ALB, CLB und NLB.

[Unterschied zwischen ALB und ELB] Einfaches AWS-Glossar, das auch Anfänger verstehen können

I. Route53 Verknüpfen Sie die Domain mit Ihrem AWS-Konto. Stellen Sie die von Ihrem name.com usw. erworbene Domain auf AWS zur Verfügung. Es ist schwierig, ein Bild zu erhalten, aber bei Name.com werden die Domäne und AWS durch Umschreiben der Nameserver-Einstellung auf den in Route53 gezeigten Nameserver verknüpft.

J. ACM Zertifikate können für Domains ausgestellt werden, die bei Route53 registriert sind. Wie kostenlos. Es ist wunderbar. Dies ist möglich, indem Sie Route53 eine Einstellung hinzufügen, die oben erwähnt wurde. Sie können es einfach immer SSL machen. SSL-Konvertierung bedeutet, dass Sie mit "https" anstelle von "http" zugreifen können. Yay.

K. RDS Ein Datenbankserver, der unter AWS verwendet werden kann. Starten Sie auf der EC2-Instanz.

L. terraform Sie können den Code, den Sie in AWS erstellen, zentral verwalten. Es gibt ein Befehlstool namens terraform, und die dort festgelegte Terraform-Datei kann in AWS wiedergegeben werden. Es gibt auch Befehle, die experimentell ausgeführt werden können, und es ist ein großartiges Tool, mit dem Sie im Voraus bestätigen können, dass die geschriebene Einstellungsdatei korrekt ist. Es gibt jedoch wahrscheinlich nur wenige Leute, die es von Anfang an aus Terraform schaffen ... (Erfahrene Leute können es), daher denke ich, dass es am besten ist, sich zuerst daran zu gewöhnen.

M. VPC VPC steht für ** Amazon Virtual Private Cloud **. Ein virtuelles Netzwerk, das einem AWS-Konto zugeordnet ist.

Es ist wie ein Miniaturgarten. Es ist ein Bild eines Gebiets, das durch einen Zaun gekennzeichnet ist. Es ist in Gebiete auf der Welt unterteilt, wie z. B. ap-nordöstlich (Tokio).

Das Konzept von AZ (Availability Zone) und Subnetz ist im Miniaturgarten VPC enthalten.

** AZ ** ist in mehrere Zonen unterteilt, z. B. ap-Nordost-1a, ap-Nordost-1c, ap-Nordost-1d. Diese AZs haben grundsätzlich eine Kopie des gleichen Inhalts. Wenn in 1a eine Katastrophe auftritt, wird diese verwendet, damit auf die Kopie in 1c zugegriffen werden kann.

Ein ** Subnetz ** ist ein unterteilter Bereich innerhalb der AZ. Unterzonen können AZ nicht überschreiten. EC2-Instanzen usw. können in diesem Subnetz platziert und im Netzwerk zugewiesen werden. Beeindruckend! Diese Subnetze haben das Konzept ** öffentliches Subnetz **, mit dem jeder das Internet sehen kann, und ** privates Subnetz **, mit dem verhindert wird, dass jeder das Internet sieht. Existiert.

Die Ebene ist ** VPC> AZ> Subzone **.

Es gibt Tokio Disneyland und China Disneyland, und die Idee ist, dass wenn Tokio nicht von einem Erdbeben getroffen werden kann, Sie in Chinas Disneyland gehen können. Toontown ist ein öffentliches Subnetz und der Personalraum ist ein privates Subnetz.

Zusammenfassung

Ich habe versucht, es in Eile zu schreiben. Wenn Sie denken, dass Sie verwirrt sind, würde ich mich freuen, wenn Sie zurückkommen und sich darauf beziehen könnten. Ich habe keine Erfahrung, möchte aber in Zukunft nicht nur auf der Serverseite und an der Rezeption arbeiten können, sondern auch auf AWS, Infrastruktur und UIUX im Allgemeinen. (Bitte arbeiten ...)

Wenn es eine Antwort gibt, werde ich die Vorlage dieser Konfigurationen erhöhen, um einen Artikel über das Erstellungsverfahren zu schreiben.

Artikel, die ich als Referenz verwendet habe

Ein großartiger Artikel, der sich so anfühlt, als ob Sie dies vorerst sehen sollten [Serverseitiger Satz] Docker + Rails + Circle CI + Terraform zum Erstellen einer Umgebung mit Code und automatisches Bereitstellen des Containers für ECS [Erste Hälfte]

Und vorerst die Entwicklungsumgebung dieses "Hallo, Welt" gekürzt. Nuxt.js + Rails (API) auf Dockers Hello World!

Wenn Sie ECS und ECR nicht verstehen, ist dies Auch Anfänger können es schaffen! Containerbereitstellung von Rails-Anwendungen mit ECS x ECR x CircleCI

Wenn Sie während der Verwendung von ECS im Netzwerk stecken bleiben, ist dies der Fall Grundlegendes Lernen des Docker ~ Docker-Netzwerks

Ich habe auch so etwas geschrieben. Vagrant + Docker + Rails + Nuxt.js + MySQL + SSL

Recommended Posts

[AWS? Docker?] Fassen Sie die erforderlichen Kenntnisse in Ihrem Portfolio auf leicht verständliche Weise zusammen. [Terraform? CircleCI?]
[Rails 6.0, Docker] Ich habe versucht, die Konstruktion der Docker-Umgebung und die zum Erstellen eines Portfolios erforderlichen Befehle zusammenzufassen