misoten-iw-g2 / lovechan

MIT License
2 stars 0 forks source link

サーバーサイドベースコード #6

Closed pei0804 closed 7 years ago

pei0804 commented 7 years ago

GAE GoをDockerでやるべきか否か

pei0804 commented 7 years ago

http://takaya030.hatenablog.com/entry/2017/07/08/181136

sr1994lu commented 7 years ago

イメージで喋るけど

GAE で秘匿したい環境変数を安全に設定する

良さそうだけど、docker versionとかdepとか合わせれるの?

合わないんだったらDockerfileかDocker-compose.ymlに書くイメージ。

pei0804 commented 7 years ago

GAE で秘匿したい環境変数を安全に設定する

このやり方は出来るよ。ただ、なんかフロントの方でここで設定した環境変数が見れるのか少し謎なんよなー。フロント側で秘匿した情報をどうするか悩ましい。

もし、環境変数が参照出来ない場合に有力なのはAWSでいうS3的なやつのCloud Storageを使って、本番ではそっちを参照するようにする。 Upload Images to Google Cloud Storage with React Native and ExpressJS

pei0804 commented 7 years ago

開発スタイルとしては、普段はフロントはnpm startで自由に開発して、APIを叩くためだけに、サーバーサイドを別で立ち上げて開発するってスタイルになるかな。それのが、GAEの制約を気にせず開発することは出来る。

pei0804 commented 7 years ago

Cloud Storageの仕様が若干だるいから、そこだけ解説する必要あるかなとは思ってる。 一旦はそこらへん気にせずベースを作ってほしい。

ちなみに、必要なことは、ローカルではローカルの設定ファイルを参照するようにして、本番ではCloud Storageを見るように分岐するってことになるかな。

sr1994lu commented 7 years ago

あー。Node.js立ち上げてくれるなら出来る想定。やってみないとわからないけど。

sr1994lu commented 7 years ago

Node立ち上がってるコンテナ生やしてね

pei0804 commented 7 years ago

おれも今まであまりフロントでtoken必要になるってケースやったことないから、どうするべきか謎。

sr1994lu commented 7 years ago

Node.js立ち上げ時に環境変数をつけて、参照するイメージ。

pei0804 commented 7 years ago

んー、正直よくわからん。 NodeとGoどっちも立ち上げるのが、果たして正解なのか?って感じがある。

pei0804 commented 7 years ago

秘匿するべきデータをそもそもフロントで持つべきなのかってのが、そこから間違ってる気がしてる。なんかいい方法ある気がする。

sr1994lu commented 7 years ago

そっちでcognitoみたいなソリューションないの?

pei0804 commented 7 years ago

ちなみに、React + Goで開発してるやつで、環境変数参照出来ない時は、以下のやり方で対応してるよ。 Why I love Create React App – Valerii Sorokobatko – Medium

sr1994lu commented 7 years ago

つまり.env金曜日に喋ってたアレ。

pei0804 commented 7 years ago

それそれ

pei0804 commented 7 years ago

ただ、本番用に.envをどうやって容易するかちょい考えたい感がある

sr1994lu commented 7 years ago

部分SSR(めんどい)するか完全SSR(めんどい)するかNodeランタイム立ち上げて環境変数保持するか

pei0804 commented 7 years ago

まあ、もうちょい時間頂戴。他の部分先にやってほしい。いま他にタスクがあって出来ないw

sr1994lu commented 7 years ago

問題なし。楽しもう。

pei0804 commented 7 years ago

もし、録音した音声をフロントからサーバーに投げる方法があれば秘匿情報をフロントに一切残さず、いい感じにやり取りはできるけどね。

pei0804 commented 7 years ago

OAuthもそういう感じってわけじゃないけど、似たような構成でやった時は、秘匿情報はフロントに一切漏らさずやってるから、そうした方がアーキテクチャ的には安全で良い感じはある。なんか、わかるなら情報頂戴。

sr1994lu commented 7 years ago

2017-09-30_23-20-08

pei0804 commented 7 years ago

あーなるほど。ちょい調べてみる。

pei0804 commented 7 years ago

ひとつ思ったのが、これ以外にもやるべきタスクやストーリーがたくさんあるから、これ後回しにして完成急いだほうがいいかもな。

pei0804 commented 7 years ago

他のが予想以上に進捗よかったらやるとか

sr1994lu commented 7 years ago

両方って認識で構成書いちゃうからインフラもそうだし、画面もそう。どのように振る舞うかも書くから、空想にならないように適宜調査は必要だね。

pei0804 commented 7 years ago

出来ることと出来ないことは調べたほうがよさそうやね。

sr1994lu commented 7 years ago

その結果を俺たちは書く。

pei0804 commented 7 years ago

Reactの.envを使って環境変数でやることにしよう。 どうするかは、CIのデプロイフェーズでファイルをぶち込むロジック入れるようにする。 ※検証が終わったら再度言う。それまでは保留で!

sr1994lu commented 7 years ago

その認識ならリポジトリをprivateにしてもらって、webpackにdevとprodで書き換えるよ。

pei0804 commented 7 years ago

おれの考えたプランとしては、タスク中に.envを作成して、その.envを元にbuildしてdeployするって感じでいける。

pei0804 commented 7 years ago

その認識ならリポジトリをprivateにしてもらって、webpackにdevとprodで書き換えるよ。

CIでどうにか出来る領域だから、大丈夫よ!

pei0804 commented 7 years ago

というより、privateにしないと安全なリポジトリに出来ないってのがあまり好きではない。

pei0804 commented 7 years ago

https://github.com/wercker/step-create-file こういうのがあるからいけるよ。 あとはファイル作成時に秘匿すべきとこは全部Weckerの環境変数に置き換えれば、どこにもtoken情報残さず運用出来る。

sr1994lu commented 7 years ago

開発時どうする?

pei0804 commented 7 years ago

開発時は、.env.devみたいな.envを参照する形で実行してほしい。

sr1994lu commented 7 years ago

あーその中身教えてくれる?

pei0804 commented 7 years ago

いま、どんな値を用意するべきか予想出来ないから、それっぽい変数名とそれっぽい値だけ用意するね。

REACT_APP_API_SCHEME = http://
REACT_APP_API_HOST = localhost:8080
REACT_APP_SPEECH_TOKEN = "1087678318033574"
sr1994lu commented 7 years ago

デプロイ時にさ、環境変数から値を埋め込むシェルスクリプト書いてほしいのが本音どう?

pei0804 commented 7 years ago

環境変数から値を埋め込むシェルスクリプト書いてほしいのが本音どう?

どういうこと?そこらへんの作業をやってほしいってこと?

sr1994lu commented 7 years ago

http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230879/?rt=nocnt

pei0804 commented 7 years ago

sedありやな。

sr1994lu commented 7 years ago

API_Scheme=3000 API_Host=... node app.js

pei0804 commented 7 years ago

なんか良い書き方があるなら、それでいいよ。 あとで、その.envを教えてくれればおk!

sr1994lu commented 7 years ago

ファイルいらなくてデプロイ時にこう書いて走らせてってこと!

pei0804 commented 7 years ago

あーなるほど

sr1994lu commented 7 years ago

機密データはサーバ上のランタイム担保

sr1994lu commented 7 years ago

package.jsonのscriptsにはbashから環境変数取得したらええやろ

pei0804 commented 7 years ago

そっちが都合良い書き方あるならそれでやっていいよ。 後で、どうするべきかを教えてくれたらタスク作る。