質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

4回答

935閲覧

Devopsの導入について

pokemonta

総合スコア170

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2020/07/12 05:21

編集2020/07/12 06:00

Linuxサーバ上にgitから取得したソース(html,javascript,css)を
AWSのS3サーバにデプロイして公開するような仕組みを導入しています。

そもそもこの開発プロセスに疑問を持ち始めています。

通常の開発は、VS codeなどを用いて
ローカルでソースを修正し、リモートリポジトリに
pushして、サーバに公開するような仕組みではないでしょうか。

現状は、ソース管理していませんし、
サーバ上で直接ソース修正しています。

これをどのように理想形に変えればよいのでしょうか?


私なりの見解

Linuxサーバが不要になる。
gitからソース取得は、PC上で行う。
VS codeでアプリケーション ソースを修正する。
pushする。リモートリポジトリは、それを検知して
S3にデプロイする。(これはJenkins?git action?でやる?)
こうすることでソース管理とデプロイを同時にできるのではないかと
考えていますが。これがよくつかわれる方法なのか
ベストプラクティスなのかあまりわかっていません。

そもそもS3自体もIaC化して修正してデプロイしたいのですが
これをVScodeで合わせて実施できるのかもわかっていません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

pokemonta

2020/07/13 13:58

ご認識の通り、S3に静的サイトをアップロードして静的ホスティングを使って公開しています。
S3に登録する前にEC2(Linux)でソース取得・修正してからS3にデプロイしているイメージなります。
そもそもこの構成がおかしいでしょうか?

を見るに、EC2を開発/ステージング環境として使用しているという事ですね。

であれば、

  1. EC2でgitからpull
  2. EC2で修正
  3. EC2で修正したものをリポジトリにpush
  4. EC2のソースをS3にデプロイ(リポジトリとS3の差分が発生しない状態になる)

というのが最初に目指すべき形かなと思います。
(既にできているなら次に進んでください)

次に

  1. ローカル環境でgitからpull
  2. ローカルで修正
  3. ローカルで修正したものをリポジトリにpush
  4. ステージング用S3バケットとドメインを用意して、S3上で動作確認
  5. 問題があったら2-4を繰り替えす
  6. 本番用のS3バケットにデプロイ

という流れを目指し、最初は手動でやってみて流れを確立出来たら、
4と6に関してはCIツールを使ってgitHubから直接デプロイというところを目指す

くらいすれば十分なんじゃないかなと思います。

投稿2020/07/13 05:56

tanat

総合スコア18727

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pokemonta

2020/07/13 06:34 編集

ありがとうございます。ちなみにですが、 この場合、EC2は開発/ステージング環境になるんですかね? EC2上には、APサーバがないのでアプリは動かせません。 ソースをviエディタで見て修正できるぐらいです。 後者ができれば前者が不要ということですね? 前者のやり方では、viエディタで直接htmlやawsのiacを修正してデプロイしていますので 本当にできているかデプロイするまでわかりません。 本来は、ローカルでVScodeなどで構文エラーがないか見てから デプロイしたいと思っていました。
tanat

2020/07/13 08:34 編集

> この場合、EC2は開発/ステージング環境になるんですかね? > EC2上には、APサーバがないのでアプリは動かせません。 それは想定していませんでしたが、その場合はただのエディタ替わりくらいの意味合いでしょうね。 Github及びS3バケットへのアクセスを制限するという意味合いが強いのかなあ・・・ S3で動くものなんですから、単にApacheなりnginxなりを入れれば動作確認は出来ると思いますよ。 SSHで接続出来ているなら、SSHポートフォワードを使えば外部に露出することなくブラウザで確認可能です。 流れとしては 1. Apacheインストール 2. Apache起動 3. SSHポートフォワードで適当なローカルポート(30080とか)をリモートの80番にポートフォワードするようにSSHクライアントに設定 4. ssh接続された状態でlocalhost:30080にアクセス という感じです。 `ssh ポートフォワード`あたりで調べてみてください。 > 後者ができれば前者が不要ということですね? そうですね。 >本来は、ローカルでVScodeなどで構文エラーがないか見てからデプロイしたいと思っていました。 それはその通りです。 デプロイするたびにドキドキしないといけない環境は本当に良くないです。 今すぐ何とかするなら、SCP経由でソースをコピーしてきてローカルで確認するというのは(ポリシー的に許されるなら)可能ですね。
pokemonta

2020/07/13 12:30

デプロイして、確認→失敗。。の繰り返しでうっとおしかったです。 >SSHポートフォワードを使えば外部に露出することなくブラウザで確認可能です。 目からうろこです。ありがとうございました。
guest

0

ちょっと質問の範囲が広いですね…。

AWSのS3サーバ

まず、S3はサーバではなくストレージです。
ここではS3に静的サイトをアップロードして静的ホスティングを使って公開している、と読み取ろうとしましたが

現状は、ソース管理していませんし、

サーバ上で直接ソース修正しています。

ここと矛盾してしまうので、現状がどうなのかがわかりかねています。

少なくとも

現状は、ソース管理していませんし、

サーバ上で直接ソース修正しています。

これは大問題なので、まずはソースのバージョン管理をするところから始めてください。

それはさておき
見解については、手法としては割とよくある流れです。

リモートリポジトリは、それを検知してS3にデプロイする。

ここについてはPushしたものをそのままデプロイするようにすると、誤ったコードでもそのままデプロイするようになります。
なので、通常は前のステップでレビューを挟んだり、テストを自動実行したりして品質を確保してからデプロイするような仕組みにします。
実現方法は様々あるので一つ一つ解説はしません。
Jenkinsでもできますし、AWSならCodeBuildやCodeDeployを使うことでもできるでしょう。
S3に置くだけならCodeBuildだけで十分ですけど。

これをVScodeで合わせて実施できるのかもわかっていません。

VSCodeは色々できども単なるテキストエディタで道具でしかないのでそこはあまり重要ではありません。

まずは個々のやり方についてもっと学ぶべきかと思います。
CI/CD、IaC、DevOpsの文脈をごっちゃにしている感もありますし、それぞれについて調べてみてください。

投稿2020/07/12 08:59

yu_1985

総合スコア7588

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pokemonta

2020/07/13 04:58

ご認識の通り、S3に静的サイトをアップロードして静的ホスティングを使って公開しています。 S3に登録する前にEC2(Linux)でソース取得・修正してからS3にデプロイしているイメージなります。 そもそもこの構成がおかしいでしょうか?
yu_1985

2020/07/13 06:10

別におかしくはないですが、EC2上でやる必要は特にないですね…。 アクセスキーを発行したくないのでEC2上でやってくれ、というならわかります。 ただ、これもGit管理していれば管理されているソースを手元に落としてきてアップロードすればいいので、まず第一歩はソース管理を行うことでしょう。
pokemonta

2020/07/13 06:40

そうですよね。なんで自分でもEC2上でやっているのか 意味わからなくて質問に至りました。ローカルでやるのが一般的ですよね?という 確認のために質問させていただきました。 cdk deploy(AWSのIaC)を実行したくでLinuxを使いたかったのですが よくよく考えるとPC上にWSLがあるのでcdk deployができそうです。
yu_1985

2020/07/13 08:26

> なんで自分でもEC2上でやっているのか これはGit等を使ってソース管理されていないからそうなってしまっていると思われますので、繰り返しますが早くきちんとソース管理するようにしてください。
pokemonta

2020/07/13 12:30

ありがとうございました。
guest

0

DevOps というプロセスを導入することが目的ではありません

現状は、ソース管理していませんし、
サーバ上で直接ソース修正しています。

この点に問題意識をお持ちだと思いますので、
まずはコードをバージョン管理するのがよいでしょう

理想形を描くことは大切ですが、
一度に理想形に持っていこうとするのはよくありません
変化が大きすぎて想定外の不具合に対処できなくなります

理想形を描くためには
ドメイン知識 (業務やビジネスに関する深い洞察) が必要です
これはドメインエキスパート (業務やビジネスに関する知識を持つ人)と
時間をかけて探りながら構築していくもので、
teratail で回答を得た通りに実施することは
望まない結果につながる可能性があります

参考: エリック・エヴァンスのドメイン駆動設計(牧野祐子 今関剛 和智右桂 Eric Evans)|翔泳社の本

投稿2020/07/12 05:44

y_shinoda

総合スコア3272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ちょっと質問意図がよくわかっていませんが、
GitHub + GitHub Actions
で実現できるもののような気がします。

ただ、結構知らないといけない範囲が広いのでオーバースペックな気もしますね。
GitHub のドキュメントを一読してみてください。

投稿2020/07/12 05:34

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問