ブックマーク / techblog.finatext.com (19)

  • Adapting Design Docs Practice for Mid-Sized Companies

    こんにちは、Finatextの @taiki45 です。この記事はFinatextグループ10周年記念アドベントカレンダーの14日目の記事です。昨日は河端さんが「保険業界の Vertical SaaS『Inspire』のビジネスモデル」という記事を公開しています。 インターネットサービス業界でDesign Docsと呼ばれているプラクティスがあります。これは、それなりに規模のあるなにかを作ったりタスクを行う前に、解決する問題や考慮事項や取りうる選択肢やそのトレードオフなどを文書としてまとめたもの(design doc)を書くというプラクティスです。 Design Docsプラクティスは、複数のチームやある程度の多さのステークホルダーをalignするという側面もあって大企業でよく使われていると思うのですが、中規模(300人程度)の企業でもDesign Docsプラクティスを行うことで、より精

    Adapting Design Docs Practice for Mid-Sized Companies
    toshikish
    toshikish 2023/12/14
  • Cloudflare Zero Trustで社内システムへのリモートアクセスをよりセキュアで便利にした話

    こんにちは、Finatextの @s_tajima です。 弊社のこれまでのリモートアクセスの環境は、Pritunl というOpenVPNベースのソフトウェアで構築されていました。( 詳しくは、こちらの記事で以前紹介させていただいています。https://techblog.finatext.com/vpn-pritunl-on-aws-68619eda6b36 ) 今回は、このPritunlベースの従来のVPNCloudflare Zero Trustに置き換え、社内システムへのリモートアクセスをよりセキュアで便利にした話です。(“社内” という表現を使っていますが、”オフィスにある” という意味ではなく、”社内メンバー向けの” という意味です。) Cloudflare Zero Trust とはCloudflareと聞くと、CDNの会社というイメージが強いと思います。しかし昨今ではC

    Cloudflare Zero Trustで社内システムへのリモートアクセスをよりセキュアで便利にした話
    toshikish
    toshikish 2022/10/17
  • コードリーディングでAirflowの仕組みを理解する

    こんにちは。Nowcastでエンジニアをしている片山(@fozzhey)です。 NowcastではワークフローマネジメントツールとしてAirflowを採用しています。 Airflowは日でもよく採用されており、実際に活用されている方も多いと思います。 しかし、Airflowを使うことはできるけど、実際にどういう仕組みで動いているのかは分からない方が多いのではないでしょうか? せっかくPythonで書かれているのに、Airflowのコードを読まないのはもったいない! ということで、この記事ではAirflowのコードリーディングを行いたいと思います。 なるべくコードやGithubのリンクを貼っていますが、手元のエディターでAirflowのリポジトリを開きながら読んでいただくとより理解が深まると思います。 コードリーディングの題材題材とするDAGとタスクこの記事ではAirflowが提供するサン

    コードリーディングでAirflowの仕組みを理解する
    toshikish
    toshikish 2021/08/30
  • ジュニアエンジニアとして入社してからの1年半を振り返る

    こんにちは。Finatextでエンジニアをしている塚です。 証券プラットフォーム「BaaS」や、それを利用して開発されたアプリケーションのフロントエンドを担当しつつ、現在はバックエンドの実装も行っています。 Finatextに入る前は大手メーカーでSEを3年ほど、その後フリーランスを1年ほどしておりました。フリーランスになってからエンジニアを目指すことを決め、独学でコーディングの勉強を始めています。 ジュニアエンジニアとしてFinatextに入社した私が、約1年半でどの程度成長したのかを振り返りたいと思います。 まず入社当時と現在でどう変わったかがこちらです。 Finatext入社当時コーディングは1人でするのは到底無理。。デベロッパーツールどうやって開くの?rebaseって何?Laravelなら少しだけ知っているVue.js, Go(弊社使用言語)書いたことない ↓1年半経った現在ヘル

    ジュニアエンジニアとして入社してからの1年半を振り返る
    toshikish
    toshikish 2021/04/13
  • Athena+Embulk+BigQueryによるアプリケーションログの分析環境構築

    はじめにこんにちは、Finatextで証券プラットフォーム(Brokerage as a Service、以下BaaS)の開発に携わっている石橋(@bashi0501)です。過去のFinatextテックブログではTerraform、CDKとIaCをテーマにした記事しか書いたことがなかったのですが、今回はログの分析活用をテーマとします。 概要弊社の証券事業ではECSによるワークロードを組んでいます。テーマのアプリケーションログについては標準出力したものをawslogsログドライバーが回収してCloudWatch Logsに送信しています。 ログの検索という観点ではCloudWatch Logs Insightsというサービスでかなりリッチにフィルターや集計を行うことができるのですが、ログデータを元にしたユーザーのファネル分析や業務改善(後述します)に活かしていきたいという意図があるため、マ

    Athena+Embulk+BigQueryによるアプリケーションログの分析環境構築
    toshikish
    toshikish 2021/03/18
  • swagger-merger を用いた大規模API開発における Swagger 運用

    はじめにこんにちは、Finatext で保険事業のプロダクト開発をしている @toshipon です。今回は以前の Fin-JAWS のイベントで少し紹介させていただいた、我々の現場で取り組んでいる、大規模API開発における Swagger を用いたAPI仕様のドキュメント運用方法について紹介いたします。 概要我々の現場では、API ベースのWeb Application を開発する際に、Swagger を用いて API 設計をしたり、BFFサーバー開発者やフロントエンド開発者とのコミュニケーション手段として活用しています。 ただし、Web Application の規模が大きくなってくると、Swagger の 定義ファイルは肥大化してしまい、メンテナンスが困難になってきます。 今回は、Web Application の規模が大きくなっても耐えうる Swagger 定義ファイルの運用方法を

    swagger-merger を用いた大規模API開発における Swagger 運用
    toshikish
    toshikish 2021/03/11
  • Goにおけるテスタブルな時刻の取り回し

    Photo by steve_jon on Unsplashはじめにはじめまして。Finatext で保険サービスの開発(主にサーバーサイド)をしているすがやです。 いきなりですがみなさん時をかけてますか? 私はかけてます。 …時刻を扱う実装というのは、得てして問題を生みやすいものです。 この記事では時刻の取り回しで生じる問題と、弊社のGoでのサーバー実装におけるそれらの問題との向き合い方を説明します。 時間に起因する課題unit testしづらい問題語り尽くされた話題ではありますが、現時刻に依存した実装はunit testしづらいという問題があります。 たとえば単純な例として呼び出し時点が休日であるかを判定するコードがある場合を考えます。 // IsHoliday 休日か func IsHoliday() bool { dayOfWeek := time.Now().Weekday()

    Goにおけるテスタブルな時刻の取り回し
    toshikish
    toshikish 2021/02/25
  • AWS CloudWatchシリーズでアプリを監視する

    こんにちは、Finatextの六つ葉と申します。現在、グループ会社のナウキャストが開発中の新サービスのAWSインフラを担当しております。 稿では、AWS CloudWatchシリーズでアプリを監視する方法について延べます。 まず、アプリ体の仕組みを紹介します。 アプリの仕組みこのアプリは、一般的なSPAによるフロントとWebAPIのバックエンドによる構成になります。Fargateに関してはAuto Scalingを設定しています。 アプリの監視システム監視システムは、ログ・通知・死活監視・ダッシュボードの4つの部分で構成されています。 X-Ray、CloudWatch LogsからのアクセスログCloudWatch AlarmsとSNS、ChatbotでのSlack、メール通知Synthetics Canaryからの死活監視CloudWatch Logs InsightやMetrics

    AWS CloudWatchシリーズでアプリを監視する
    toshikish
    toshikish 2021/02/18
  • Spring + JPAによるアプリケーション構築事例

    Photo by Ash from Modern Afflatus on Unsplashはじめにこんにちは。Finatextでエンジニアをしている山﨑です。 弊社では、先日「Wealth Wing」という資産運用サービスをリリースしました。そのシステムのバックエンドは、Spring + Kotlinを用いてアプリケーションを構築しており、インフラストラクチャ層ではSpring Data JPAを用いています。 稿では、以下のような、Spring Data JPAを組み込んだ場合に発生する課題に対する解決策を、弊社の実例を通して示します。 データベースマイグレーションはどうすべきかIn-Memory DB(H2DB)ではなく、MySQL等を使ってJUnitでテストしたいデータベースアクセスを「書き込み専用」「読み取り専用」で呼び分けをしたい最後に、稿に関するサンプルも添付していますので

    Spring + JPAによるアプリケーション構築事例
    toshikish
    toshikish 2021/01/14
  • AWS Lambdaの汎用的なエラー通知を実現するLapperというツールをつくりました

    Lapper is a wrapper programs for Container running on Lambda. (Beta) - Finatext/lapper AWS Lambdaのエラー通知どうするか問題Finatextでは、サーバレスなタスク実行の基盤として、AWS Lambdaを活用しています。 具体的なユースケースとしては、 CloudWatch EventsのSchedule expressionsをトリガーにした、定時処理SQSやS3のEvent NotificationやCloudWatch Eventsの特定のイベントをトリガーに起動する、非定時処理API Gateway等を介したHTTPSリクエストをトリガーにした、Webサーバとしての処理あたりがあります。 Lambdaを使うことによる恩恵はあらためて言及するまでもないと思いますが、非常に便利に使っています

    AWS Lambdaの汎用的なエラー通知を実現するLapperというツールをつくりました
    toshikish
    toshikish 2021/01/06
  • DX Criteriaを使って開発体制の改善状況を振り返る

    こんにちは。Finatextでエンジニアをしている@s_tajima です。 この記事は、CTOA Advent Calendar 2020の、12/9の記事です。 弊社では、日CTO協会の出している、DX Criteria を使って自分たちの開発体制についてのアセスメントをしています。 初回は2019年12月頃に実施し、最近あらためて今の状況を確認してみました。 結果として、初回に比べて大きな改善傾向がみられたので、今回はその詳細について紹介します。 尚、今回紹介するアセスメント結果は私が全社の状況を俯瞰することを心がけて実施したものですが、これとは別にチーム単位でのアセスメントをしていたりもします。 アセスメント結果の比較画像2回分のアセスメントの結果を並べた画像をお見せします。 左が2019年12月、右が2020年10月の時点のアセスメント結果です。 結果として、青(=ポジティブな

    DX Criteriaを使って開発体制の改善状況を振り返る
    toshikish
    toshikish 2020/12/09
  • レガシーシステムをDocker環境へ移行させた話

    はじめに初めまして、FinatextグループのK-ZONEチームでインターンをしている松永と申します. 現在インターンではバーチャル株投資ゲームの「トレダビ」の改善を行っています. トレダビを長く運用し続けてきた弊社ですが、長年の運用から技術的負債が溜まっていました. その中の一つに、トレダビのローカルの開発環境でゲーミフィケーションサーバ(トレダビにおいてゲーム的な要素を担当するサーバ)がDocker上で動いておらず、ローカルで開発を進める際に特定の画面の確認ができないという問題がありました. この問題をどのように解決したかについて紹介します. トレダビの開発環境についてトレダビはRuby on Rails + MySQL + Java(ゲーミフィケーションサーバ)で運用されており、AWSの開発環境では以下のような構成で動作しています. しかし、トレダビのローカルの開発環境ではゲーミフィ

    レガシーシステムをDocker環境へ移行させた話
    toshikish
    toshikish 2020/11/17
  • Factory patternでデータベースのテストを効率化する

    An image of a factory from https://unsplash.com/photos/6xeDIZgoPawはじめにこんにちは, FinatextグループのNowcastでデータエンジニア/データサイエンティストをやっている隅田(@yummydum)と申します. データパイプラインを開発していると, データベースからデータを取り出し, 加工し, 結果を再度データベースに格納するという操作を(時には複雑なSQL等を通じて)行うことがよくあると思います. パイプラインの品質を高めるためにこれらの操作はしっかりテストされるべきです. テストの際にプロダクション環境のデータベースを使う訳にはいかないので, プロダクション環境に似せたテスト用のデータベースにテストデータを格納しておき, これをテストに用いれば良さそうです. しかし, テストデータはうまく管理しないと保守性や可

    Factory patternでデータベースのテストを効率化する
    toshikish
    toshikish 2020/10/13
  • Pythonで競プロをしよう!〜入門者が知っておくべきTips〜

    こんにちは、Finatextグループのナウキャストでデータエンジニアをしているけびん( Twitter: @Kevinrobot34, AtCoder: Kevinrobot34 )です。先日、PyCon JP 2020で、「Python競プロをしよう! 〜入門者が知っておくべき高速化Tips〜」という題名で発表をさせていただきました。発表時のスライドと動画はこちらです。 この内容について、少し加筆してまとめようと思います。 はじめに最近AtCoderを中心に、競技プログラミングの人気が高まっています。 C++で参加している人が最も多いですが、Pythonで参加している人もかなり増えています。 Pythonは書きやすい一方でC++と比べてしまうと実行速度が遅く、Logicは正しくてもPythonだとTLE(Time Limited Exceeded, 時間超過)してしまうことも少なくあり

    Pythonで競プロをしよう!〜入門者が知っておくべきTips〜
    toshikish
    toshikish 2020/10/06
  • ISUCON10の予選を4位で通過しました

    こんにちは、Finatextでエンジニアをしている @s_tajima です。 先日行われたISUCON10の予選に、Finatextのエンジニア陣 @s_tajima / 石橋 @atsushi-ishibashi / @yami20 で参加しました。 チーム名は 一口坂46 です。オフィスの前の坂の名前です。 結果として、予選を4位で通過することができました! 私達のチームがどんな戦略でどんなことをやっていたかのブログです。 尚、このブログはチームメンバー3人での共著です。 リポジトリhttps://github.com/s-tajima/isucon10q-hz46-app 事前準備他にもやっていた準備はあるのですが、特に役立ったものを3つほど紹介します。 作業用AWS環境の準備事前練習用のEC2、当日のログアップロード用のS3バケット(後述) 等を作成するためのAWSアカウントを用

    ISUCON10の予選を4位で通過しました
    toshikish
    toshikish 2020/09/14
  • 次世代デジタル保険を支える監視・通知の技術

    監視・通知の仕組みの全体像また、弊社では Terraform を用いて IaC ( Infrastructure as Code ) を実現して、各AWSアカウント環境の状態をコードで一元管理していますが、 Datadog の監視項目も Provider が用意されているため、Terraform で管理をすることが可能です。現状はすべての Datadog の監視項目がコード化されているわけではないですが、こちらは随時対応を行っていきたいと思っています。 外形監視外形監視は、WebサイトやAPIエンドポイントが正常に動作していることを、定期的に特定のURLに対して問い合わせをして、期待されたステータスコードや要素を返すことを監視することを目的とします。 弊社では Datadog の Synthetic Monitoring という機能を利用して監視を行っていますが、この機能の特徴としては W

    次世代デジタル保険を支える監視・通知の技術
    toshikish
    toshikish 2020/08/27
  • Finatextのエンジニアがおすすめするゴールデンウィークに読みたい技術書20冊

    Photo by Jessica Ruscello on Unsplashこんにちは!FinatextホールディングスでPR/DevRelを担当しています、ミヤカワ( @ayumiya_live )です。 いよいよゴールデンウィークですね! 今年はリモートワーク(在宅勤務)のまま連休に突入し、そのまま自宅で過ごす方がほとんどなのではないでしょうか。まとまった時間を学習に充てようかな、というエンジニアもきっと多いはず。 そこで、Finatextグループ(Finatext、スマートプラス、ナウキャスト)のエンジニアに「ゴールデンウィークに読みたいおすすめ技術書」というテーマで1冊ずつ選んでもらいました。 なお、Finatextグループのエンジニア全体としては比較的サーバーサイドに強く、フロントエンドとデータ解析系でエッジの効いたエンジニアが数名いる、という感じですが、今回は特に分野を指定せずに

    Finatextのエンジニアがおすすめするゴールデンウィークに読みたい技術書20冊
    toshikish
    toshikish 2020/04/30
  • リモートワーク社員80人分のVPN環境を低コストかつスケーラブルに提供する方法

    こんにちは。Finatextでエンジニアをしている @s_tajima です。 新型コロナウイルス感染症の影響により、近年徐々に広まりつつあったリモートワークやテレワークといった働き方やその設備に対する企業の温度感が、「あったらいいね」から「無いとだめ」に急速に変わりつつあるのを感じます。 弊社も先日の緊急事態宣言を受け、 全社的に原則在宅勤務という体制 に移行しました。 そこで今回は、Finatextのリモートワーク(在宅勤務)を支えるVPNのシステムについてご紹介したいと思います。 FinatextのVPNシステムは以下のように運用しています。 月に2万円程度のコストPritunlというオープンソースのソフトウェアを使用AWS上にスケーラブルな形で構築エンジニア・非エンジニア含めて80人ほどの社員が利用今使っているVPNに何かしらの不満がある方、突然VPNの環境が必要になりどのように構

    リモートワーク社員80人分のVPN環境を低コストかつスケーラブルに提供する方法
    toshikish
    toshikish 2020/04/16
  • CI/CDパイプラインを構築するにあたってaws-cdkにcontributeした話

    はじめにこんにちは、Finatextでエンジニアをしている石橋(@bashi0501)です。 Finatextではコードに近いところでの小さいサイズのtestや静的解析にCircleCI, GitHub Actionsを利用し、クラウド環境へのリリースパイプラインにはより大きいサイズのテストを実環境と同じネットワークで実行したい、デプロイに使うクレデンシャルをむやみに他のサービスに置きたくないという理由からAWS CodeBuild, AWS CodePipelineを使用しています。 これまではCodePipelineによるリリースパイプラインをマネジメントコンソールから丹精込めてお手製で作っていました。が、以前の田島の記事でもあったように50個近くのAWSアカウントがある中でこれまでの方針で継続・展開していくのは厳しくなってきました。 そこでパイプラインは一つのAWSアカウントに集約し

    CI/CDパイプラインを構築するにあたってaws-cdkにcontributeした話
    toshikish
    toshikish 2020/04/09
  • 1