タグ

troterのブックマーク (1,229)

  • Amazon EFSのバーストクレジットを活用してコストを4分の1に削減! - Uzabase for Engineers

    ソーシャル経済メディア「NewsPicks」SREチームの美濃部です。 NewsPicksではアプリケーションのビルドにAWS CodeBuildを使用しており、ビルドキャッシュの格納先としてAmazon EFS(AWSのフルマネージド型NFSファイルシステムサービス)を利用しています。 アプリケーションビルド構成 以前はS3に格納していましたが、EFSにする事でビルド時間が2分程短縮できる事がわかったので多少コストを払ってでも開発者の生産性を重視しました。1日に何度もビルドを行う開発者にとってこの2分の積み重ねは大きな価値があります。開発者の人数が多ければ多いほどこの価値もあがります。 ただし、想像以上にEFSの利用料金が発生してビルドに関わるコストが上がってしまいました。 この記事ではバーストクレジットを効果的に活用することでコストを4分の1に削減する事に成功したお話をしたいと思います

    Amazon EFSのバーストクレジットを活用してコストを4分の1に削減! - Uzabase for Engineers
    troter
    troter 2024/11/01
  • CDKでスタック間参照してはならない - Uzabase for Engineers

    はじめに 皆様こんにちは、ソーシャル経済メディア「NewsPicks」(Media Infrastructureチーム)エンジニアの北見です。 AWS における有力な IaaC の選択肢として、CDK が挙げられます。 tech.uzabase.com 今回は、私が CDK におけるバッドプラクティスだと思っている「スタック間参照」について説明させて頂きます。 既に CDK を運用している方にとっては釈迦に説法ですが、お付き合い頂けると嬉しいです。 スタック間参照すると何が問題になるか? スタック間参照とは、以下の様にとあるスタックのリソースを別のスタックで参照することを指します。 例えば、デプロイ用のイメージがpushされる ECR を管理する StorageStackと、アプリケーションを動作させる基盤を管理する ApplicationStack に分けたとして、両者をスタック間参照す

    CDKでスタック間参照してはならない - Uzabase for Engineers
    troter
    troter 2024/09/30
    (安全側に倒しているとはいえ)スタック間参照は扱いにくいのでCDKの推奨(物理名をつけない)を十分認識した上で、物理名を指定してリソースを作成し、物理名を指定して参照している
  • AWS CDKのWeightedTargetGroupを使いEC2からECSへ段階的に移行を進める方法 - Uzabase for Engineers

    こんにちは。ソーシャル経済メディア「NewsPicks」で主に検索システムを開発しております崔(ちぇ)です。 去年まで弊社の検索システムをEC2上に構築しておりました。今年にそれをコンテナ化しECSへ移行しました。コンテナ化に関しては前回の記事でまとめてますので、ご興味ありましたら是非読んでみてください。 tech.uzabase.com EC2からECSへ移行することに限らず、あらゆる「AからBへ移行する」行為はスイッチを切り替えるように簡単ではありません。 仮に、昨日までAが100%担った処理を、今日からBが100%担うようにしたとしましょう。何かの考慮漏れがあり以下のようなエラーが発生した際に、その障害の影響範囲は全体にわたり、最悪の場合はしばらくサービスが使えなくなることだってあり得ます。 想定より負荷が高まり新しいリクエストに対して全くレスポンスが返せない 想定できなかったバグが

    AWS CDKのWeightedTargetGroupを使いEC2からECSへ段階的に移行を進める方法 - Uzabase for Engineers
    troter
    troter 2024/09/30
    WeightedTargetGroup便利
  • 複雑なクエリーをActive Recordのモデルとして定義する方法|TechRacho by BPS株式会社

    WITH句 SQLではWITH句を用いて任意のサブクエリーに対して名前をつけることができます。 SELECT * FROM (複雑なサブクエリー) を WITH any_name AS (複雑なサブクエリー) SELECT * FROM any_name のように記述でき、可読性の向上かが期待でき、再利用も可能となります。 WITH句では、(複雑なサブクエリー)の部分を CTE (Common Table Expression) と呼びます 今回は users 仮想テーブルでは以下のSQLの実行を目標とします WITH "users" AS ( SELECT "accounts"."id", "accounts"."email", "profiles"."first_name", "profiles"."last_name" FROM "accounts" INNER JOIN "prof

    複雑なクエリーをActive Recordのモデルとして定義する方法|TechRacho by BPS株式会社
    troter
    troter 2024/09/03
  • 技術選定の失敗 2年間を振り返る TypeScript,Hono,Nest.js,React,GraphQL

    技術選定の失敗 2年間を振り返る TypeScript,Hono,Nest.js,React,GraphQL はじめに 新たに書きました。 MySQLを使っても会社は潰れない 久々に記事を書いたのでどうぞお手柔らかに... 私が過去2年間で行った技術選定の成功と失敗を振り返り、その学びを共有したいと思います。 文才無いので淡々と箇条書きでいきます Twitterエンジニア垢作りました。エンジニアのお友達がいません。 @uncode_jp 注意 意見を押し付けるものではありません。ただ建設的な議論は大事だと思う。 自分の意見は明確に、歯切れのよい表現を意識している。人それぞれだよねみたいな感じに逃げたくない。技術選定に結論はある(過激)。 ただし技術選定にはコンテキストがあり、例えばプロダクトのフェーズや組織の事情によって当然結論は変わる可能性がある。 OSSの開発者さん達は偉大ですごい。あ

    技術選定の失敗 2年間を振り返る TypeScript,Hono,Nest.js,React,GraphQL
    troter
    troter 2024/08/27
  • Event sourcing for smooth brains: building a basic event-driven system in Rails

    Event sourcing is a jargon filled mess that is unapproachable to many developers, often using five dollar words like “aggregate root” and “projections” to describe basic concepts. While the high standards of “full event sourcing” might recommend building your entire application around the concept, it is often a good idea to start with a smaller, more focused area of your codebase. I was familiar w

    Event sourcing for smooth brains: building a basic event-driven system in Rails
    troter
    troter 2024/08/08
  • CodeDeployで更新するECS ServiceをCDK管理して詰んだ話 - Uzabase for Engineers

    はじめに 皆様こんにちは、ソーシャル経済メディア「NewsPicks」(Media Infrastructureチーム)エンジニアの北見です。 先日、↓ の記事を書かせて頂きました。 tech.uzabase.com 前回では CDK の良さをメインに紹介しましたが、今回は上手く使えずにドはまりしてしまった例をご紹介します。 ことの始まり ある日、チームメンバーからこんな報告があがってきました。 「CDKのバージョン上げたのですが、cdk deployで失敗しちゃうんですよね。これ分かります?」 xxx-cluster-stack failed: Error: The stack named xxx-cluster-stack failed to deploy: UPDATE_ROLLBACK_COMPLETE: Resource handler returned message: "Re

    CodeDeployで更新するECS ServiceをCDK管理して詰んだ話 - Uzabase for Engineers
    troter
    troter 2024/07/22
  • 円安に負けない!共通バックエンドAPIサーバーARM対応プロジェクト - Uzabase for Engineers

    こんにちは。ソーシャル経済メディア「NewsPicks」のSREチームの飯野です。 SREでは2023年から円安に負けないコスト削減を継続して行なっていますが、最近は圧倒的な円安におされ気味です。 2024年1月-6月の間に141→161円の変動はちょっと厳しすぎますよね。 今回は2024年1月から3月にかけて行なったNewsPicksの共通バックエンドAPIサーバーのARM対応プロジェクトについて話したいと思います。 ARM対応はコスト削減を目的とした施策です。適用範囲の見誤りがあり、当初の想定ほど大きなコスト削減は実現できませんでしたが、活発に変更が行われるプロダクトに段階的に変更を加えてリリースすることができました。 ARM対応をするにあたり、何を考えてどの順番で着手したかという情報は、今後ARM対応を行う開発者に参考になりそうなので紹介します。 ARM対応計画 ARMのコンテナイメ

    円安に負けない!共通バックエンドAPIサーバーARM対応プロジェクト - Uzabase for Engineers
    troter
    troter 2024/07/11
    久しぶりにブログを書きました。円安に対抗していくのは大変です。
  • Webサービス公開前のチェックリスト

    個人的に「Webサービスの公開前チェックリスト」を作っていたのですが、けっこう育ってきたので公開します。このリストは、過去に自分がミスしたときや、情報収集する中で「明日は我が身…」と思ったときなどに個人的にメモしてきたものをまとめた内容になります。 セキュリティ 認証に関わるCookieの属性 HttpOnly属性が設定されていること XSSの緩和策 SameSite属性がLaxもしくはStrictになっていること 主にCSRF対策のため。Laxの場合、GETリクエストで更新処理を行っているエンドポイントがないか合わせて確認 Secure属性が設定されていること HTTPS通信でのみCookieが送られるように Domain属性が適切に設定されていること サブドメインにもCookieが送られる設定の場合、他のサブドメインのサイトに脆弱性があるとそこからインシデントに繋がるリスクを理解してお

    Webサービス公開前のチェックリスト
    troter
    troter 2024/07/07
  • レビューの仕方

    Open8 勉強会で発表したレビューの仕方と心理的安全性の話しです。

    レビューの仕方
    troter
    troter 2024/05/25
  • エンジニア従業員エンゲージメント向上への道 - Uzabase for Engineers

    はじめに こんにちは!NewsPicksのVP Of Mobile Engineeringの石井です。 約1年前にPharmaXさん主催の「事例で学ぶ!エンジニア組織文化を作る採用・評価の仕組み」というイベントでPharmaX 取締役・エンジニアリング責任者の上野さん、カオナビCTOの松下さんと私の3人で事例発表やパネルディスカッションをしました。(そのときの記事は、PharmaXさんのこちらの記事にあります) このときに私が話したエンゲージメントに関することは、「採用とオンボーディングを頑張った結果、エンゲージメントもよくなりました」的な話もしました。 ただ、それ以外にも多くのことをしています。今回はそこを深掘りしたいと思います。 以前の状態との比較 当時、発表した時のモバイルチームのエンゲージメントは次の通りでした。(NewsPicksでは半期に一度、サーベイをしています) で、202

    エンジニア従業員エンゲージメント向上への道 - Uzabase for Engineers
    troter
    troter 2024/05/09
  • SQL滅ぶべし | ドクセル

    SQL • リレーショナルデータベースシステムと会話するための言語 • 1970年 Codd が RDB モデルと同時に提案 (Alpha言語) • 1974年 Chamberlin と Boyce が改良 • 元々は SEQUEL (Structured English Query Language) だったが、商標登録されていた • 読み方は エスキューエル とそのまま読む (Glliespie 2012) SQLSQL は目的別に 4つに分けられる • DCL (データ制御言語) GRANT とか • DDL (データ定義言語) CREATE TABLE とか • TCL (トランザクション制御言語) ROLLBACK とか • DML (データ操作言語) • INSERT, UPDATE, DELETE, SELECT • データ分析者にとって重要なのは SELECT 文

    SQL滅ぶべし | ドクセル
    troter
    troter 2024/05/07
    ORMでFROM句、WHERE句、SELECT句の順番(ActiveRecordならUser.active.pluck(:id)のような書き方)に親しんでいるので、順番がわかりにくいというのは同意できる。
  • AWS Security HubとSlackを利用して、セキュリティ状況の監視運用を効率化したお話 - Uzabase for Engineers

    はじめに 初めまして!ソーシャル経済メディア「NewsPicks」SREチーム・新卒エンジニアの樋渡です。今回は「AWS Security Hub」と「Slack」を用いて、弊社で利用しているAWSリソースの監視運用を効率化したお話です。 お話の内容 年々増加するサイバー攻撃に対抗するため、セキュリティ対策は日々重要度が増してきています。 そこで弊社で利用しているAWSのリソースに対して、各種セキュリティイベントの収集ができるAWS Security Hubを利用することで、セキュリティ状態の可視化と迅速な対応がしやすい運用を行い、セキュリティ状態の現状把握から始めることにしました。特にNIST CSFの「検知」部分の運用について整備した内容となっています。 NIST Cyber Security Frameworkについて 皆さん、「NIST Cyber Security Framewo

    AWS Security HubとSlackを利用して、セキュリティ状況の監視運用を効率化したお話 - Uzabase for Engineers
    troter
    troter 2024/05/01
  • Playwrightを使ったE2Eテストを導入した話 - Uzabase for Engineers

    はじめに こんにちは。ソーシャル経済メディア「NewsPicks」の QA/SET チームの海老澤です。 先日 弊社で E2E テスト実行するために Playwright を導入したため紹介させてください。 E2Eテストとは E2Eテスト(エンドツーエンドテスト)とは、ソフトウェア開発におけるテスト手法の一つで、アプリケーションが実際の運用環境と同様の条件下で正しく動作することを確認するためのテストです。 システムの開始点から終了点までを通じて、ユーザーの視点でアプリケーションのフローを追い、機能全体が連携して期待通りに動くかを検証します。具体的には、ユーザーが行うであろう一連の操作をシミュレートして、データがシステムを通じて適切に流れるかや、最終的なアウトプットが正しいかどうかを確認します。E2Eテストにより、部分的な単体テストや統合テストでは見逃されがちな問題を発見することができます。

    Playwrightを使ったE2Eテストを導入した話 - Uzabase for Engineers
    troter
    troter 2024/04/26
  • 体制を考えるときに意識していること - id:onk のはてなブログ

    1on1 で伝えたので外にも書いておく。 プロダクトやチーム、メンバーのフェーズ まず現状分析。 自プロダクトは PPM で言う花形、金のなる木、問題児、負け犬のいずれに当たるのか 勢い MAX でめっちゃ盛り上げるのか、地味に役割を達成するのか。自チーム全集中なのか他チームのフォローに回るのかみたいな方針が変わる 自チームは エラスティックリーダーシップ で言うサバイバルモード、学習モード、自己組織化モードのいずれに当たるのか チームを改善しなければいけないのか、プロダクトだけを見ていて良いのか。チームで改善できるのか、リーダーや外部の強い意志が必要なのか 各メンバーは、期待される役割において SL理論 で言うとどのフェーズなのか 指示的行動が必要だとマイクロマネジメントすることになり、マネージャ/メンター的な人/行動を増やす必要がある 役割を網羅しているか こういう軸で考えていることが

    体制を考えるときに意識していること - id:onk のはてなブログ
    troter
    troter 2024/04/25
  • なぜCDKを使う「べき」なのだろう? - Uzabase for Engineers

    はじめに 皆様こんにちは、ソーシャル経済メディア「NewsPicks」(Media Infrastructureチーム)エンジニアの北見です。 現在、私は弊社サービスの一部のインフラ刷新を行なっている最中で、ここ数ヶ月 AWS CDKを触っておりました。 前職では Infrastructure as Code として Terraform を使ったことがあるのですが、少なくともAWS を使うという条件においては CDKを使うべき という結論に辿り着きました。 今回はそのように考えるようになった理由について説明していこうと思います。 前提 Terraform はパブリッククラウドにおける Infrastructure as Code の走りとして様々な現場に導入実績があり、それに対するリスペクトは持つべきです。 しかしよくある「AvsB」というメリデメの構図で「どっちでもいいよ、好みだよ」と投

    なぜCDKを使う「べき」なのだろう? - Uzabase for Engineers
    troter
    troter 2024/03/29
    CDKはコンパイル時、シンセサイズ時に色々チェックが入るので安心感もある。/NewsPicksでは月一くらいで上げてます。7月にnode16のlambdaが作成できなくなるのでCDKが作るlambdaのnode18対応が大体終わったcdk-v2.95.0以上にはしたい
  • ソフトウェアエンジニアのライブラリアップデートの向き合い方 - Uzabase for Engineers

    こんにちは。ソーシャル経済メディア「NewsPicksNewsPicks Stage.事業のエンジニアをしています、林です。 業務では Next.js / Rust / Go などを用いて、経済・ビジネス情報に特化した動画配信サービスであるNewsPicks Stage.の開発・運用を行っています。 はじめに 突然ですが、皆さんは自身のソフトウェアのライブラリアップデートは行えていますか? 皆さんはどのようにライブラリアップデートを行なっていますか? 新機能を試したくて? npm iで失敗してから頑張る? Renovate / dependabot が自動Mergeされる環境? もしくは対応担当が特定の日にまとめてMergeする運用? しかし多くの開発者は、アップデートに対して「うまくいっている」と言えないのではないでしょうか?自身も様々なプロダクトを開発してきた経験上、日々の中ではどう

    ソフトウェアエンジニアのライブラリアップデートの向き合い方 - Uzabase for Engineers
    troter
    troter 2024/03/22
    書いてある通り誰かがやらなきゃ上がらないし、上げるための調査が能力の向上につながると思う。
  • New RelicのルックアップテーブルとNRQLを駆使して使われていないAPIを探し出す - Uzabase for Engineers

    ソーシャル経済メディア「NewsPicks」のSREをしている飯野です。 サービスの開発は試行錯誤の連続です。サービスの成長とともに機能はどんどん増えていきます。追加される機能はサービスに不可欠な重要な機能だけではなく、サービスの方向性や前提が変わり不要になってしまったり、思ったように価値が提供できずに使われない機能もたくさん登場します。 このような機能が登場してしまうことは仕方のないことですが、ずっとメンテナンスしていくコストは払えません。定期的にお掃除したいものです。 というわけで、使われなくなってしまった機能(APIサーバーのREST API)をNew Relicを使って探し出してみましょう。 使われていないAPIを探す ルックアップテーブルに登録するAPI一覧の作成 ルックアップテーブルを登録する NRQLでTransactionルックアップテーブルを検索する 利用頻度が低いAPI

    New RelicのルックアップテーブルとNRQLを駆使して使われていないAPIを探し出す - Uzabase for Engineers
    troter
    troter 2024/02/29
    ブログ書きました。ルックアップテーブルとNRQLを使いこなしていきましょう!
  • 2024年のPythonプログラミング - Uzabase for Engineers

    ソーシャル経済メディア「NewsPicks」で推薦や検索などのアルゴリズム開発をしている北内です。Pythonは頻繁に新機能や便利なライブラリが登場し、ベストプラクティスの変化が激しい言語です。そこで、2024年2月時点で利用頻度の高そうな新機能、ライブラリ、ツールなどを紹介したいと思います。 この記事では広く浅く紹介することに重点を置き、各トピックについては概要のみを紹介します。詳細な使用方法に関しては各公式サイト等での確認をおすすめします。なお、記事ではOSとしてmacOSを前提としています。 環境構築 Pythonの環境構築はpyenvとPoetryの組み合わせがもっとも標準的でしょう。 以下の手順でpyenvとPythonをインストールできます。 brew install pyenv # Bashの場合 echo 'eval "$(pyenv init -)"' >> ~/.ba

    2024年のPythonプログラミング - Uzabase for Engineers
    troter
    troter 2024/02/05
  • 毎日始業直後25分の技術キャッチアップがよくワークしている話|helloyuki

    子どもが生まれたのでそちらに時間をとられて、なかなか技術のキャッチアップが難しいことが増えた。こう書くと、隙間時間を使えばよいではないかと思われるかもしれない。実際うちの子はかなり昼も夜も寝る(寝た)し、お世話がかなり楽な方で隙間時間はある。しかし子育てしている方はわかると思うが、子が寝ている間は親も寝ないと体力が持たない。加えて、子はいつまで機嫌良くいるかわからない。いつ中断されるかそわそわしている状態で、まとまった論考を腰を据えて読む気力などない。というわけで、隙間時間を使っている気力はない。 数ヶ月前に仕事に復帰して以降、どうも最新技術の動向やトレンドを追えなくなっているのが悩みだった。ちなみに、「最新の話題を常日頃から追うべきか」という議論は時折見かけるが、私は今より高い給与得たい、かつ(たとえば組織全体を見るような)難しい仕事をしたいのであれば追い続けるべきという立場だ。というわ

    毎日始業直後25分の技術キャッチアップがよくワークしている話|helloyuki
    troter
    troter 2023/12/27
    習慣の力ってすごい。習慣化できてるのがすごい。