#Reactエンジニア
Explore tagged Tumblr posts
Text
副業で月77万円も夢じゃない!?Reactエンジニア案件の始め方
こんにちは、上田美穂です。 「副業で収入アップしたいけど、どんなスキルが活かせるんだろう…」そんな悩みを持つあなたへ。今回は、高収入と自由な働き方を両立できる可能性を秘めた「Reactエンジニア」の副業案件に焦点を当て、その魅力に迫ります。 最新の調査データをもとに、Reactエンジニア案件のリアルな実態を徹底分析。平均年収や働き方の自由度、需要の高い業界など、具体的な情報をお届けします。 「Reactって難しそう…」と感じている方��大丈夫。Reactの基礎知識や、どんなものが作れるのかもわかりやすく解説します。この記事を読めば、Reactエンジニアとしての副業への第一歩を踏み出すためのヒントが見つかるはずです。 プレスリリース 副業で収入アップ!Reactエンジニア案件の魅力とは? 副業に興味があるけれど、どんなスキルを活かせるのか、どれくらいの収入が見込めるのか、不安に感じている方…
#ECサイト#JavaScript#React#Reactエンジニア#SaaS#Webサービス#Web開発#エンジニア#キャリアアップ#スキルアップ#フリーランス#フリーランスボード#フルリモート#プログラミング#フロントエンド#リモートワーク#働き方改革#副業#副業エンジニア#収入アップ#在宅ワーク#将来性#市場価値#案件
0 notes
Text
フルスタック信仰に潜むキャリアの罠
こんにちは、木村太陽です。 IT業界で「フルスタックエンジニア」という言葉がすっかり定着した今、フロントエンドからバックエンド、さらにはインフラやデータベース、時にはデザインやマーケティングまでもカバーするエンジニアが注目を集めています。 私もかつて、「何でもできるエンジニア」になりたいと思い、あらゆる分野に手を出してきました。
しかし、フルスタック志向には思わぬ落とし穴があることを、経験を通じて実感するようになりました。 このブログでは、その代表的な落とし穴と、そこから得た学びについてお話ししたいと思います。
スキルが拡がるほど、自信が揺らぐ paradox
フルスタックという言葉の魅力に惹かれて、あれもこれもとスキルを広げていくと、気づかぬうちに「なんとなく触れるけど深く理解できていない」という状態に陥ることがあります。
たとえば、Reactでフロントエンドの開発をしていたかと思えば、数日後にはAWSのインフラ設定に頭を悩ませる。その後、SQLチューニングやAPI設計にも手を出す。気づけば毎日が“浅く広く”の繰り返しです。
もちろん、技術の幅を持つことは大きな強みですし、小規模なチームやスタートアップでは特に重宝されます。ただ、すべてを“表面理解”で済ませてしまうと、特定の分野において本質的な価値を出せず、自信のなさにもつながります。
私自身も、「何か聞かれたときに説明できない」「技術的な議論についていけない」といった場面が増え、スキルの広さがかえってプレッシャーになることもありました。
選ぶべきは「全部」ではなく「軸」だった
では、フルスタック志向は悪なのかと言えば、決してそうではありません。重要なのは、自分のキャリアにおけるフルスタックの意味を“再定義”することだと考えます。
私がたどり着いた答えは、「広く触れつつ、深める分野を明確にする」ことです。すべての技術を100%習得する必要はなく、核となる領域を1〜2つ定めて、そこを徹底的に磨く。それが、自分の専門性を活かしつつ、他領域にも対応できる“応用力のあるエンジニア”への道だと気づきました。
たとえば、私はバックエンド開発を軸に据えつつ、フロントやインフラにも最低限対応できるように意識しています。こうした“重心のあるフルスタック”を意識することで、仕事の幅は保ちつつ、周囲からも専門家として信頼されるようになりました。
また、自分の「強み」を明確にすることで、学習の優先順位も自然と決まり、効率も上がります。日々の技術選定やキャリア選択において迷いが少なくなり、精神的にも安定しました。
まとめ
フルスタック志向は非常に魅力的な考え方ですが、それを無計画に追い求めると「なんでも屋」になりかねません。技術の幅を広げる中で、自分の得意領域を明確にし、そこを磨き続けることが大切です。
私たちエンジニアは、「なんでもできる」よりも「何を軸にするか」を持つことで、長く活躍できるキャリアを築けるのではないかと思います。
0 notes
Text
プログラマー求人、新着情報(2025-6-14)
求人
7月 「COBOL-外部設計~総���テスト」 東京都 https://www.seprogrammerjobs.com/job/show/38807
6月 「サイバーセキュリティ-コンサル-英語対応」 東京都 https://www.seprogrammerjobs.com/job/show/38806
6月リモート「インシデント対応-セキュリティ」 東京都 https://www.seprogrammerjobs.com/job/show/38805
8月案件 「上流工程-損保-テスト」 東京都 https://www.seprogrammerjobs.com/job/show/38804
6月案件「React-設計~開発」 東京都 https://www.seprogrammerjobs.com/job/show/38803
野球関連WebサイトのWebディレクション業務 東京都 https://www.seprogrammerjobs.com/job/show/38802
システムエンジニアリーダー-管理職採用-役員候補 東京都 https://www.seprogrammerjobs.com/job/show/38801
フロントエンドエンジニア-ゲーム-サービス 東京都 https://www.seprogrammerjobs.com/job/show/38800
大手通販サイト運営企業におけるAndroidエンジニア 東京都 https://www.seprogrammerjobs.com/job/show/38799
Webサイト開発におけるWebディレクター募集 東京都 https://www.seprogrammerjobs.com/job/show/38798
0 notes
Text
徹底比較高収入が狙える副業ランキン
【徹底比較】高収入が狙える副業ランキン2025 https://ift.tt/frHpOJs 「副業で本気で稼ぎたい」 「月10万円以上の副収入を得るにはどんな選択肢があるのか」 「高収入が狙える副業にはどんなリスクや必要なスキルがあるのか こような疑問をお持ち方は多いのではないでしょうか。2025年現在、副業を通じて高入を得ている人は増えていますが、その一方で「思ったほどげない」と挫折する人も少なくありません。 本記事では、**月収10万円以上を目指せる副業**を徹底比較、それぞれの特徴、必要なスキル、リスク、成功事例などを詳しく解説 * はじめに:副業で高収入を得るための現実 ** 高収入副業の定義 本記事では「高収入副業」を**月収10万円以を安定的に得られる副業**と定義します。これは一般的副業の平均収入(月3〜5万程度)をきく上回る水準です。 ただし、高収入を得るためには相応投(・お金・労力が必要であることを理解しておく必要があります。「楽して稼げる」という甘い誘惑には要注意です。 ** 高収入を得るために必要な3つの要素 副業で高収入を得るためには、以の3つの要素が重要です: 1. **専門性・スキル**: 市場価値の高いスキルや知識を持っていること 2. **時間投資**: 特にー時相当の時投資が必要 3. **継続力・成長意欲**: 挫折せずに継続し、常にスキルアップす姿勢 これらの要素のバランスが取れていると、高収入を得られる能性が高まります ** 入とリス・時間投資のバランス 高収入が期待きる副業ほど、一般的にリスクや必要な時投資も大きくなる傾向があります。例えば: - **低リスク・低時間資**: 収入は限定的だが、失敗のリスクも小さい(:クラウドーシング) - **中リスク・中時間投資**: それなりの収入が期待できるが、ある程度の時間とスキルが必要(例:Webライティグプラミン) - **高リスク・時投**: 高収入の可能性があるが、失敗のリスクも大きい(例:投資系副業、EC事業 自分のリスク許容やえ間間を考慮して、バランスの取れた選択をすることが重要です。 * 高収副業の選び方 ** 自分スキル・経験の棚卸し方 高収入業を選際ま自スキや験を観的に評るることが重要です: 1. **職務験**: 本業で培ったスキルや知識は何か 2. **資格・専知**: 持ってる資格や専門的な知識は何か 3. **趣味・関心**: 趣味や関心事で年りでいことか 4. **人脈・ットーク**: ���用でる人脈ネトークはあるか これらを書き出してると意な強みが見つかることがあります。既存のスキルを活かせる副業から始めると、成功確率が高まります。 ** 時間投資と収入のバランス 副業に投資でき間と期待する収入のバランスを考ることも重要す: - **週5時間未満**: 月5万円程度が現実的な目標 - **週10時程度**: 月10万程を目指る可能性あり - **週20時間以上**: 月20万円以上の高収入も視野 ただし、れあくまで目安であ、スルや効率によって大きく変わります。特に初期段階では、収入よりもスキルアップや実績作りを優先するこも大切です。 ** 短期的収入と長期産成の違い 副業には大きく分けて2つのタイプがあります: 1. **フロー型**: 労働時間に比例して収入が発生する(例:フリーランス業務) 2. **ストック型**: 一度作ったものが継続的に収入を生む(例:投資、コンテンツ販売) 高収入を持続的に得るためには、この2つをバランスよく組み合わせることが理想的です。短期的にはフロー型で安定収入を確保しなが、長的はストック型の産成を目指すう略が効果的です。 * 【キ用収入る副副業ンキング ** 1. ITエンジニ��・プログラミング *** 概要と市場ニーズ ITエンジニアやプログラマーとしてのスキルを活かし、ステムやWebサイト制なを請け負う副業です。2025年現在、IT人材の需要は依然として高く、特にAI、クラウド、セキュィなど分野では材いい。 - **収入安**: 月10万円〜50万円以上 - **必要時間**: 週10〜20時間程度 - **リスク**: ★★☆☆☆(比較的低い - **成長性**: ★★★★★(非常に高い) *** 必要スキルと習得方法 必要なスキルは専門分野によっ異り一以下よようなスキルが求められます: - プログラミング言語(JavaScript、Python、Rubyなど) - フレームワーク(React、Vue.js、Railsなど) - データベース(SQL、NoSQLなど) - バージョン管理(Git) これらのスキルは、以下方で習得できます: 1. オンライン学習プラットフォーム(Udemy、Progateなど) 2. 技術書や公ドキュメト 3. 実際にプロジェクトを作りながら学ぶ 未経験からでも1年度の学習案件を受注できるレベルに達することも可能ですが、本格的高単価案件を獲得するに2〜3年の経必なースが多いです。 *** 案件の探し方と単価場 案件は以下の方法で見つけることでます: 1. クラウドソーシングサイト(Lancers、CrowdWorksなど) 2. フリーランスージェント(レバテックフリーランス、PEなど) 3. SNSやコミュニティでの人脈 単価相場は以のす - 初心レベル: 時給1,500円〜3,000円 - 中級者レベル: 時給3,000円〜5,000円 - 上級者レベル: 時給5,000円〜10,000円以上 *** 収入アップのステップ 収入アップのためは以下のステップを踏むことが効果的です: 1. 小規模な案件から始め、実績積む 2. 特定技業に特し性高 3. ポートフォリオ充せる 4. 直接クライントと契約し、中間マージンをカットする 5. 継続的な案件を獲得する *** 実際の成功事例 「本のSEの験を活かして、副業でWebアプリケーション開発を始めました。最はクラウドソーシングで小さな案件を受注していましたが、実績を積むうちに直接依頼が来るようになりました。現在は月に60時間程度の作業で、月30万円ほどの収入があります。特にAI関連の技術に特化したことで、単価アップにつなが(30代男) ** 2. Webデザイ・UI/UXデザイン *** 概要市ニ WebサイトやリデインUI/UXデザインを請け負う業覚的に的なだけなく、使いやすさや目的達成に効果的なデザインが求められる分野す - **収入目安**: 月10万円〜30万円以上 - **必要時間**: 週10〜20時間程度 - **リスク**: ★★☆☆☆(比較的低い) - **成長性**: ★★★★☆(高い) *** 必要スキルと習得方法 必要なスキルは以下の通りです: - デザインツール(Adobe XD、Figma、Photoshopなど) - HTML/CSSの基礎知識 - UI/UXの原則理解 - レスポンシブデザインの知識 これらスキルは、以下の方法で習得きます: 1. オンラインコース(Udemy、Skillshareなど) 2. デザインチュトリルやブロ 3. 実際にデザインを作成してポートフォリオを構築 未経験からでも半年〜1年程度の学習と実で、案件を受注できるレベルに達することが可能です。します。単なる「稼げる副業リス」ではなくあなたの状況に合った高収入副をぶための判断材料を提供します via 人気の副業を考察 https://ift.tt/3s2BVSD May 28, 2025 at 05:03AM
0 notes
Quote
ほとんどの人がスキルゼロで、それを誇りに思っているからです。彼らは「私はコードの書き方なんて全然わからないし、学ぶつもりもないけど、この素晴らしい Web サイトを作ったから、あなたと同等だ。ソフトウェア開発者は死んだ」と言って、1000 回も作られた (うまくいけばラッキーな) 基本的な React Web サイトを渡します。これらの人々は決してコードの書き方を学ばず、そのための心構えもなく、これがなぜ問題なのかさえ理解していません。 AI は一般的に学習にも悪影響を及ぼします。経験豊富なソフトウェア エンジニアでさえ、Copilot などのツールを使用することで基本的なスキルが失われると報告しています。
AI ツールを使用してコードを作成する人がなぜ嫌われるのか? : r/ChatGPTCoding
0 notes
Text
0 notes
Photo
すんげ!ChatGPTと連携し、言われた色の風船を確実に射貫くロボット
著者パルモ
公開:2025-01-26・更新:2025-01-26
今やAI搭載なんて当たり前の時代となりつつあるが、その進化は目覚ましく味方につけたら心強いが、敵に回したらとんでもないことにな��ものまで開発されている。
このロボットはChatGPTを活用して釘打ち機を制御し、例えば黒なら「ブラック」と言われると、と言われたら、驚きの速度と精度で、壁に設置された黒い色の風船を全て撃ち抜いていく。
広告の下に記事が続いています
この技術は「2025年の建設業界を大きく変える可能性がある」と開発者が語る一方で、悪用されたら大変なことになると懸念の声も上がっている。
ChatGPTと連携し、命令された色を射抜くロボット
このロボットを開発したのはSTS Innovations LLCのエンジニアだ。彼は「AIを搭載した全自動の空気圧釘打ち機」として、このプロジェクトを説明している。
このロボットは、ChatGPTを通じて言葉で命令を受け取り、それに基づいて釘打ち機を制御する仕組みとなっている。
例えば「黄色」と言われたら、壁に貼り付けてある黄色の風船を全て打ち抜いていく。
青と命令され、壁にある青色の風船を全部割った後、エンジニアが青色の風船をロボットの前に投げると、それも見事に打ち抜いている。
しかし、ChatGPTがどのようにロボットと連携しているのか、あるいはOpenAIが提供する安全性の制約をどのように克服したのかについては、明確にされていない。
この技術の主な用途として、建設現場での作業効率を大幅に向上させることが期待できるという。
開発者は「現在開発中の新製品であり、2025年の建設業界に革新をもたらすだろう」と投稿している。
SNSではこの動画に対してさまざまな反応が寄せられている。
「これをお祭りに持って行けば、大きなぬいぐるみをすべて手に入れることができる」、「この技術がロボット犬に搭載されるのが楽しみだ」といった声が上がる一方で、この発明が雇用に与える影響を懸念する声もある。
「この機械が僕の仕事を奪うだろう。組合がこれを見過ごすわけがない」と建築業界からの声も。
また、技術の倫理的側面を問題視している人も多い。「この機械は実弾でも動作するのか?もしそうなら肌の色や人の顔を認識できるのか?」という指摘もされている。確かに人の特徴を識別し、命令1つで撃つことができたら、凄腕のスナイパー並みの恐ろしい存在になるだろう。
危険なロボット開発を受け、OpenAIがアクセスをブロック
OpenAIは、同氏がChatGPTを使ったロボット開発を行っていることを把握し、「私たちのポリシーに違反している」としてアクセスをブロックした。OpenAIの規約では、武器の開発や安全に関わるシステムの自動化を禁じている。
もしこのような技術が商業化された場合、利用の是非についてさらなる議論が必要になるだろう。
AI技術は、建設業界をはじめ多くの分野で画期的な変化をもたらす可能性を秘めている一方で、武器化のリスクや倫理的な課題も無視できない。
AIは確かに優れた能力を持っており、様々な分野で活躍している。だが今後、このような技術の開発と利用において、どのように利便性と安全性のバランスを取るかが重要な課題となるだろう。
References: AI-powered robot aims and fires at balloons with lightning-fast precision, OpenAI reacts | Trending - Hindustan Times / This AI Robot Can Aim And Fire At Balloons In Lightning Speed - News18
広告の下にスタッフが選んだ「あわせて読みたい」が続きます
あわせて読みたい
専門家が予測する2025年の「ブラックスワン」もし起きたら世界に衝撃を与える5つの事象
AI操縦の無人戦闘機と人間のパイロットによる初のドッグファイトが行われる
狙った人間は逃さない。顔認証で追跡し暗殺できるAIドローンをわずか数時間で開発
このAIからは逃れられない?野外で撮影した写真の場所を正確に特定するAI
AIがわずか6時間で4万を超える有毒分子を導き出す。化学兵器として乱用される危険性
((画像1/3) すんげ!ChatGPTと連携し、言われた色の風船を確実に射貫くロボット - カラパイアから)
0 notes
Text
#ばばさん通信ダイジェスト : 「State of JavaScript 2024」公開。フロントエンドライブラリ利用率1位はReact、メタフレームワークはNext.jsなど、1万4000人のエンジニアが回答
賛否関わらず話題になった/なりそうなものを共有しています。
「State of JavaScript 2024」公開。フロントエンドライブラリ利用率1位はReact、メタフレームワークはNext.jsなど、1万4000人のエンジニアが回答
https://www.publickey1.jp/blog/25/state_of_javascript_20241reactnextjs14000.html
0 notes
Text
2024年06月24日の記事一覧
(全 8 件)
コンパクトで音もよし。話題のFIIOアクティブスピーカー「SP3 BT」使ってみた
インテル「Gaudi 3」はAIでトップクラスの性能/コストを実現。拡張性と柔軟性で大規模クラスタと開発環境を強力に支援
Apple、自然言語のプロンプトからSwiftコードを自動生成する「Swift Assist」を次期開発環境「Xcode 16」に搭載
「State of JavaScript 2023」公開。フロントエンドライブラリ利用率1位はReact、メタフレームワークはNext.jsなど、2万3500人のエンジニアが回答
State of JavaScript 2023
3DプリンタにハマったのでPrusaSlicerの公式ドキュメントをていねいに読んだ
一体どんな世界が見える? iPhoneのための“特殊”なマクロレンズ
Metaが本物の写真に「Made with AI」ラベル表示、写真家らが指摘
0 notes
Text
副業で稼ぐならReactエンジニア!高収入&自由な働き方を手に入れよう
副業で高収入&自由な働き方を手に入れたいなら必見!👀✨ 人気のReactエンジニアの副業の魅力や始め方を解説! リモートワークでスキルアップも目指せる!
こんにちは、本田知香です。 副業に興味はあるけど、どんな仕事がいいか悩んでいる方はいませんか? 今回は、副業として注目されている「Reactエンジニア」について、その魅力や将来性、具体的な収入などを紹介します。 Reactエンジニアは、Webアプリケーション開発において高い需要があり、高収入、案件数が多い、リモートワーク比率が高いなど、副業として非常に魅力的な条件が揃っています。 さらに、スキルアップ、収入アップ、キャリアアップなど、副業を通して様々なメリットを得ることが可能です。 この記事では、Reactエンジニアの副業の魅力やメリット、始めるための具体的なステップを解説していきます。 ぜひ最後まで読んで、Reactエンジニアという選択肢を検討してみてください。 プレスリリース [blogcard…
0 notes
Text
「State of JavaScript 2023」公開。フロントエンドライブラリ利用率1位はReact、メタフレームワークはNext.jsなど、2万3500人のエンジニアが回答
JavaScriptに興味を持つ世界中のIT技術者2万3540人が回答したアンケートの結果をまとめた「State of JavaScript 2023」が公開されました。 回答者の国別分布を見ると米国が16%、フランスが7%、ドイツも7%、... https://www.publickey1.jp/blog/24/state_of_javascript_20231reactnextjs23500.html?utm_source=dlvr.it&utm_medium=tumblr Publickey
0 notes
Quote
アプリ開発者がユーザーの認証と管理に使用できる埋め込み可能な UI、API、管理ダッシュボードのスイートを作成するスタートアップであるClerk は、Stripe、Andreessen Horowitz、Madrona の参加を得て、CRV が主導するシリーズ B ラウンドで 3,000 万ドルを調達しました。 この収益により、Clerkの調達総額は5,550万ドルとなり、共同創設者兼最高経営責任者(CEO)のColin Sidoti氏は、この収益はClerkのサービスを認証を超えて認可へと拡大すること、つまり、ユーザーが誰であるかを単に識別するのではなく、ユーザーが持つ権限を決定することに充てられると述べている。 。 「認証は常に当社の製品ビジョンの一部でしたが、その上に成功する認証製品を構築する必要がありました」とシドティ氏はTechCrunchの電子メールインタビューで語った。 「Clerk の認証サービスは 2023 年に驚異的な成長を遂げ、現在では認証を求める顧客が殺到しています。」 Clerk は、Sidoti と彼の兄弟 Braden Sidoti によって 2019 年 3 月に設立されました。 両方ともエンジニアです。コリンは MIT で学位を取得していますが、ブレーデンはセントルイスのワシントン大学を卒業し、以前は Uber と Inspirato で働いていました。 Clerk は認証用の開発者ツールを構築し、オープンソースのフロントエンド JavaScript ライブラリである React でコーディングされたドロップイン コンポーネントを提供します。 Clerk は、顧客に代わってユーザー データを管理しながら、ボットなどの悪意のあるアクティビティを検出しようとします。
認証スタートアップの Clerk が 3,000 万ドルを獲得し、Stripe | と戦略的契約を結びました。 テッククランチ
1 note
·
View note
Text
プログラマー求人、新着情報(2025-4-26)
求人
6月案件 証券系システム保守 フロント開発「JavaScript、Typescript」 東京都 https://www.seprogrammerjobs.com/job/show/38581
5月 長期案件 Oracle DB運用保守 東京都 https://www.seprogrammerjobs.com/job/show/38580
5月案件 フルリモート nbspwebアプリケーション開発「TypeScript-React」 東京都 https://www.seprogrammerjobs.com/job/show/38579
5月or6月案件フルリモート Azure基盤設計-構築支援 東京都 https://www.seprogrammerjobs.com/job/show/38578
5月案件 上流設計支援「React4~5年」 東京都 https://www.seprogrammerjobs.com/job/show/38577
広告プラットフォーム企業のグループ会社におけるフルスタックエンジニア 東京都 https://www.seprogrammerjobs.com/job/show/38576
大手自動車販売会社のiOSアプリ開発におけるFlutterエンジニア 東京都 https://www.seprogrammerjobs.com/job/show/38575
SaaSプロダクトに携わるエンジニア募集 東京都 https://www.seprogrammerjobs.com/job/show/38574
大手求人検索サービスにおけるデータエンジニア 東京都 https://www.seprogrammerjobs.com/job/show/38573
大手自動車販売会社の社内業務システムにおけるRubyエンジニア 東京都 https://www.seprogrammerjobs.com/job/show/38572
0 notes
Text
0 notes
Text
ブログ設立しました。
はじめまして、ケンジと申します。
Webエンジニア歴5年、ブログ歴4年。
新卒でIT企業に入社してから、ずっとIT畑で生きてきました。(年齢バレますね。。。)
私の強みは、
PHPでのサービス作成(RubyやGolang、Reactなども可)
Wordpressでのブログやホームページ作成
SEO対策
AWSでのインフラ構築
サービス設計、コンサル
です。
もしご興味ある方は、コメントいただければ相談に乗ります。
本格的にお仕事依頼をしたい方は、稼働時間、単価の相談もさせていただきます。
以下のような問題を抱えている方のお役に立てます。
ホームページをキレイにしたい
予約システムやお問い合わせフォームを作りたい
サイトにアクセスが欲しい
通販の売上を上げたい
インフラのセキュリティを上げたい
Webに関する相談に乗って欲しい
非IT事業者の方の多くは、何をすればいいかわからないけど、何かIT化させないといけないと考えているのではないでしょうか。
しかし、コンサル会社に頼むとしても、
料金が高そう
IT系の話についていけない
アイデアくらいは出してからじゃないとな
と考え、踏み出せないでいるのかもしれません。
私は、個人事業主なので、気軽のお声がけいただけます。
お問い合わせは、コメント欄にてお願いいたします。
3 notes
·
View notes
Text
Node.js(Express) サーバ運用と ELB タイムアウト
この記事は Node.js Advent Calendar 2019、15 日目の記事です。
こんにちは。ものづくり推進部の武田(@tkdn)です。
先日 11/30, 12/1 に弊社がスポンサードさせていただいた JSConf.jp に参加してきました。当日参加したセッションの雑多なメモはパブリックに残し、社内のコンフルには整理したものを展開し知見を持ち帰って実務にいかそうと思います。
会場廊下では、お世話になった方、知り合いのエンジニア、発表された方と立ち話する機会もありまして、情報交換や普段オンラインでのみやりとりしている方ともオフラインでコミュニケーションできて非常に充実したカンファレンスでした。
初日にスポンサートークの枠で 5 分程度ですが、mediba での フロントエンド, JavaScript についてお話させていただきました。表面的なことばかりだったのでもう少し泥臭い話もすればよかったかなと感じています(こういうのとか、こういうのとか)。
日本での初開催に向けて尽力された運営の皆さま、本当にありがとうございます。
スポンサートーク: mediba におけるフロントエンド, JavaScript
当日参加セッションメモ: JSConf.jp 雑まとめ
さて本題の記事ですが、今年度から Node.js でのサーバ運用をはじめてつまづきのあった、ロードバランサーと Express そのタイムアウト、ランタイムバージョンアップ後の問題、そして問題に対する課題感について書いています。
Node.js(Express) サーバ運用が始まる
2019 年 3 月に実施した au Webポータルのリニューアルには Next.js を利用していますが、もちろんそこには Express の存在も要るわけで、それに伴う新しい運用が始まるということでもあります。
正直なところ Node.js のサーバ運用経験があるメンバーが豊富にいたわけではないので、負荷試験・性能試験等で安全はもちろん担保の上で、運用に乗ってからいろいろ粗(というと言い方はよくないですが)は出るだろうなと思っていました。
ELB, Express のタイムアウトはきちんと確認しよう
au Webポータルの現アーキテクチャは CDN, AWS を利用しておりリクエストを受ける前段は
Akamai CDN -> ELB -> ECS クラスタ(Node.js コンテナ)
という形なのですが、リリース後すぐに Datadog のアラートとログから、極稀に ELB が 504 を返すことがあるということが分かりました。全体の1パーセントに満たないログです。
504 だとユーザ面に影響があるのではというツッコミが入りそうですが、最前段にある Akamai でオリジンが 5xx のステータスコードを返却する場合には正常時の stale cache を返却する構成になっているため、ユーザ面への影響はありません。ありませんが、これはこれで問題です。
504 を返していた原因としては Express 側の keepAliveTimeout を ELB に合わせたものにしていなかったというのが原因になります。リリース前に気付くべきことなのかも知れませんが、この問題については性能試験においても検出はされておらず、運用に乗せてから検出されたケースになります。
解決方法としては、ELB のアイドルタイムアウトのデフォ値が 60 秒なので、express 側は 60 秒以上にしておくといいかもしれません。
const app = express(); const httpServer = app.listen(3000, () => console.log('Example app listening on port 3000!')); /** @note タイムアウトの設定 */ httpServer.keepAliveTimeout = 70000;
参考: HTTP | Node.js v12.13.1 Documentation(デフォルト値は 5000 となっています)
Node.js v8.x -> v10.x バージョンアップ
Node.js v8 の EOL は年内(2019-12-31)となっていますが、皆さんきちんとアップデートできていますか?
弊チームはギリギリでバタバタとやりたくなかったため、au Webポータルチームが抱えているプロジェクト群(一つではありません)で利用している Lambda の Node.js ランタイムを v10 へ移行するところから始めました。割と早い段階でランタイムアップデートを行うに至った経緯としては、Lambda ランタイムの AMI が更新 というアナウンスがあったため、同時に確認し追ってかかる運用コストを減らそうという意図もありました。
アップデートによるパッケージの影響や動作確認などを終え、Lambda AMI 変更・ランタイムバージョンアップはいくつか課題があったものの解消し 7 月段階で全て v10 に切り替えを完了しています。
その後 8月に Express を運用しているコンテナ内のランタイムアップデートへと作業を進めたのですが、Node.js のバージョンアップはアプリが依存するパッケージも多く影響範囲の調査だけで相当時間がかかります。そのため、ローカル環境コンテナ内ランタイムバージョンアップ、ステージング環境へのデプロイなどで実動作から確認するのが一番手っ取り早く、動作確認とステージング環境からのアラートがないことを確認し、バージョンアップ後の担保としました。
JavaScript = Node.js はブラウザのランタイムとしてスタートしている言語であること、Chrome に搭載されている V8 をエンジンとしていること、などから後方互換性がある程度保ったままメジャーバージョンが上がっていきます。そして偶数バージョンが LTS のリリースラインにあり、奇数はすぐ EOL をむかえるリリースプロセスになっています。
バージョンアップリリース後にタイムアウト再発
実働しているコンテナのランタイムバージョンアップのリリース後、見覚えのあるアラートが上がるようになりました。
前述の ELB タイムアウト問題の再発です。
この時も数パーセントのかなり低い割合で現象が発生していました。おそらく同様の問題であるような気がしていたのですが、いろいろ調べたところ下記の記事にあたり大変助かりました。
Check Your server.keepAliveTimeout - Shuhei Kagawa
Regression issue with keep alive connections · Issue #27363 · nodejs/node · GitHub
記事にある内容は前述のロードバランサーのタイムアウトと Exress のタイムアウト見直しと同じになりますが、末尾に重要な情報とリンクがあり、二つ目の issue に詳細が書かれています。
結果から言うと v10.15.2 以上の場合は server.headersTimeout の指定を上記の keepAliveTimeout で指定した数値より大きくする必要があります(指定がない場合、デフォルト値は 40000 です)。
const app = express(); const httpServer = app.listen(3000, () => console.log('Example app listening on port 3000!')); /** @note タイムアウトの設定 */ httpServer.keepAliveTimeout = 70000; httpServer.headersTimeout = 80000;
該当の issue で話されている内容ではありますが、Slowloris HTTP DoS 攻撃(不完全なヘッダーを送り続けてサーバのプロセスを圧迫するような攻撃です)に対する防止策のコミット 1a7302b から変更があるようです。
今回の件から見えてくる課題
運用の知見がなかったものは蓄積する他ありませんが、今回その中でも課題と感じることが出てきました。
バージョンアップの担保とは
環境差異による再現性の低さ
ひとつめ、バージョンアップについてです。これは EOL がついてまわる言語を扱う以上向かい合わなくてはいけませんし、どこで安全性を担保するのか難しいところです。アップデートにより obsolute された API 等は調査で知り得るものの、既存で存在しユースケースの中で発生しえる現象については実働で確認するしかありません。
担保できる機能テストの自動化やステータスチェック等考えられることは多くありますが、何年も保持できる LTS バージョンはなく、比較的早いリリースサイクルに対してどう向き合うかは課題だと感じます。
ふたつめ、環境差異による再現性について。こちらについては、ステージング環境でタイムアウトの現象を検出できなかった点が課題と感じています。今段階でも再現せよというお題に明確な解答が出せていません。プロダクション環境で稀に出たアラートだったというところで片付けてもいいのかも知れませんがなんだかモヤります。
具体的な回避策については記述したとおりではあるものの、あまり決定的な解がなくもんやりしつつ、以上 ELB のアイドルタイムアウトと Express(Node.js)サーバのタイムアウトについて武田が書きました。
mediba ではエンジニアだけでなく一緒にプロダクトを良くしていくメンバーを募集中です。特に TypeScript でサーバサイドを書ける方や React に取り組みたい方がいらっしゃるとわたしが一方的に嬉しいのでぜひよろしくお願いいたします。
1 note
·
View note