【Go言語】 webapp GO Part1 【Golang】 [無断転載禁止]©2ch.net
GAEのstandardも1.11からurlfetchとかが消えてハッピー
ベータとれたらやっと人に勧められるわ GAE/SEのGo言語でgRPCするためのベストプラクティスってある?
それをまとめたWAFがあると理想なんだがなぁ
プロジェクト
└ サービスA: GAE/SE Node.js Nuxt.jsでSSR
└ サービスB: GAE/SE Go言語 サービスAからのリクエストを処理するAPIサーバ
gRPC(Twirp)を使いたい TwirpってことはHTTP/1.1なREST使いたいんだろ?
双方向通信やストリームを使わないのであればgRPCよりも
GraphQLのほうがいいと思う
nuxt.jsとGraphQLを組み合わせてサービスAに統一するほうがいいぞ
nuxt.jsのserverMiddlewareでフックしてGraphQLのエンドポイント出すだけ
https://qiita.com/takanorip/items/d1e8618800d951780f4b それならサービスBにプレーンなApollo-server(graphqlサーバ)デプロイして
サービスA(nuxt.js側)からクエリ投げてJSON取得する構成のほうがよくないか
せっかく境界つくるんだから疎結合にしとこうぜ
Microservice化して作業担当者の責任を明確にしたほうがいい
負荷に応じてインスタンスのグレードやインスタンス数を上げたり下げたり出来るメリットも生まれる
フロントエンド(SSR)担当のサービスA
バックエンド(GraphQL)担当のサービスB
スッキリするじゃん まぁ例のQiita記事はApollo-clientとNuxt.jsのやり方だから、Serverには触れてないけどな
>nuxt.jsのserverMiddlewareでフックしてGraphQLのエンドポイント出すだけ
これに対しての意見な
serverまでnuxt.jsに密結合させる必要はない 俺もGAE/Go信者やで
実はその他のPaaSやIaaSクラウドにはない魅力がGAE/SEにはある。
それは「1日の予算設定」だ。
GAE/SEだけ、EDDoS(エコノミックDDoS)で予期せぬ損害を被るリスクが低いのである。
予算使い果たしたらOver Quotaエラーでて終わり。サービスは停止するが破産は免れる。
他のサービスは予算ライン超えても警告メール出すだけで止まらない。
パケ・ホーダイのないスマホでYoutube動画を見るくらい恐ろしい行為なのだ。
資金力のない零細ベンチャーが、悪意ある競合他者から身を護るために有効な選択である。 GAE/Node.jsとGAE/Goってどっちがスピンアップ早いのだろう?と思って調べたらこうなった
https://www.bunkei-programmer.net/entry/2018/06/13/232912
Go 平均0.495秒
Node.js 平均0.6516秒
Javaは問題外だな JavaScript界隈のエコシステムが羨ましくなってきた…
Nuxt.jsでSSR出来るのNode.js環境だけだし
パッケージマネージャーのYarnは高速かつ進捗表示が親切だし
(go get だと-vオプション付けても分かりにくい…)
GraphQLもApollo Server楽ちんだしドキュメントもわかりやすい
Go言語だとスキーマ定義が冗長だったり(graphql-go)
プレーンで可読性の高い定義ファイルから自動作成できる便利なgqlgenは
gqlgenコマンドバイナリが何かトラブってdeplicatedになってるし
いまいちすっきりしない jsみたいなコンパイラ通さない言語はテストが大変すぎて使いたくない
ほんのちょっとしたものを作るのはいいけど規模がでかくなると苦痛のほうが遥かに大きくなると感じてる 巨大なプログラムを書けない人はセンスが無いだけ
そういう人はコンパイラ使っても破綻する >>543
Typescriptあるやん
GoにはGoの良いところがあるから心配するな https://github.com/prisma/prisma/issues/1708
prisma/prismaはいつGoogle Cloud Datastoreに対応してくれるんだい? (1)Google App Engine Datastore
import "google.golang.org/appengine/datastore"
(2)Google Cloud Datastore
import "cloud.google.com/go/datastore"
(3)Google Cloud Firestore
import firebase "firebase.google.com/go"
この関係が複雑で分かりにくい
将来的には(3)からbetaが取れて本流になるんでしょ?
あとgo111の第二世代GAE/SEと旧世代のコードが分散してて辛いな
最新の情報はここを見て!という道標が欲しい
公式ドキュメントは散らかりすぎてて訳わからない (3)Google Cloud Firestoreは、betaなので東京リージョンが存在しない。
(2)Google Cloud Datastoreは2019年中に自動で(3)にアップグレードされる
おそらく(1)も?
Firestoreの裏側にはSpanner(単独で使うとめっちゃ高い)がある。
またDatastoreモードとNativeモードがある。
Datastoreの裏側にはBigtableがある。旧世代の制約はここから来てる。
FirestoreがGAになったらDatastoreは用済み。
Firestore Native Modeのほうがいいならbetaであること、東京リージョンがないことを覚悟して使うべし。 GraphQLの定義ファイル書いてCUIでコマンド打つだけで
Google App Engine / SEで動作するwebアプリケーションが
完成するシステムを開発して欲しい
誰か頼むよ
マッツン、わかめ氏よろしく >>558
GAE/SEで動かせる言語の中でスピンアップが一番高速
これが最大のメリット
Java→クソ遅い、10秒かかる
PHP、Python→普通
Node.js→やや早い
Golang→チョッパヤ
スピンアップが早いのでインスタンス寝かせておいてもすぐ反応できる
(課金節約)
○○砲などのアクセス殺到スパイクが来てもスピンアップが早いので瞬時にスケールする
他のIaaS、PaaSは割と遅い gaeでgo動かしてるんですが、jsonpayload形式でログって出せないですか? Goのwebasmって最小でも2MBって馬鹿なの死ぬの?
この大きさってなんの意図があるんだろう Go失速したのかissueマネージメントやら方向性の意思決定に難があるようだな
このまま使い続けて大丈夫だろうか >>565 氏が難が無いようにしてくれれば、このまま使い続けても大丈夫ですよ! いわゆる声の大きいstaticおじさんたちにissue占拠されて進化しなくなったな…マジで何とかしてくれ! みんなのGo言語改訂されるのか。
Goの書籍少ないから買う。 GraphQLとGo言語をテーマにした専門書が欲しいわ
今は学習ソースへのアクセスのしやすさでNode.jsを選びがちになってる
SSRはNode.jsしか出来ないのでそのアドバンテージもデカイ macでgoenvを使って最新の1.12.xをインストールしようと思ったら一覧に出てこないのですが何か理由はあるのでしょうか?
goenvは1.23.3です。 >>573
goenv v2 で対応される予定だけど、まだそれがβだね。
https://github.com/syndbg/goenv/releases
急ぎの場合はHomebrewとかじゃなくて、直接masterをチェックアウトすると良いよ。 >>574
なるほど、ベータか、、、
無理に最新を追いかけないのがいいかな。
ありがとうございます。 >>574
試しに入れてみた。
やっと1.12で開発できるぞ。 あのエラーハンドリングDraftが提案されてからもう1年くらい経つが
結局どうなったのかGitHub覗いたら話がまとまるどころか別提案が乱立してた!
えぇ・・・ アクティブなErrHandling提案を分類すると4つくらいかな?類似提案多すぎで追いきれん他にもありそう
a. 公式draftみたいなHandler独立定義タイプ
b. try等の制御キーワード導入で関数コール前に置くタイプ
c. @や!や?等の制御記号をerr変数前後に付与して処理に繋ぐタイプ
d. val := func() onerror(err Error) { ... }みたいな後置ブロックタイプ
aにはそもそも何だったかの不備があって提案が乱立した経緯があるけど
bは他言語の失敗から見ても今更感で大多数が反対
cの記号導入はperl等々のスクリプト言語みたいにsigil,twigilと複雑化していずれ初見殺しになるからGo wayじゃないという反応
dは次の行にif err != nilを書くのと大差なくてerr戻り値が末尾側に固定されるデメリットが増えてるだけと指摘
フロー制御とは別にError型のほうも雲行き怪しいね Go失速したっけ?むしろ上がり調子な気がする。
案件はある。 V言語がこのまま成長したらGoは完全にお役目終了にならんか少し心配ではある
TypeScriptが出たときのDartを思い出す C言語にトランスパイルするだけの言語だから
V言語ソース→トランスパイル→C言語→コンパイル→実行バイナリになるので
C言語の弱点(コンパイルが遅い)を強化する糞言語にしかみえないけどな 初期のC++と同じCへのトランスパイル方式なのかVは
Goの文法にRust等のmatchとか?制御とか追加してあったりコンパイルもサイトの説明通り速いな
ホント毎年あたらしい言語増えるの楽しい中学生のやつも エラー制御いまだに決着つかないし
しばらく見ないうちにDenoもgoからrustに変わってたし
Go2出な杉でPerl6みたいな末路にならないか心配 この言語、やろうかなと思ったらC#より全然遅いのね。
スクリプトよりは早いけど、コンパイルする言語としてはVMでもなくネイティブなわりにめっちゃ遅い。 >>594
別にコンパイルした後早ければ問題ない。 だからコンパイルした後でC#より遥かに遅い。
つか名のあるコンパイル型ではワーストに近いんじゃないか。 しーしゃーぷがまた暴れてるのか、Rustの手のものか、この攻撃性が気に入らん Go(fasthttp)、C#(aspcore)、PHP(swoole)
https://web-frameworks-benchmark.netlify.app/compare?f=aspnetcore,fasthttp,swoole-coroutine
処理できるリクエスト毎秒はGoの方が1.5倍、レテンシーは50%まで2倍速い、99%になると2倍遅い、平均は同等 【2月、2万人】 超過死亡が東日本大震災より多い
://rio2016.5ch.net/test/read.cgi/lifeline/1651735156/l50
これから学びたい人気言語上位なのにまるでスレが書き込まれてないのは何故? 学ぶやつは5ch関係なく、自分で学ぶ
むしろ、5chで質問するやつは、コピペしかできないし、何をやってもできない