ブックマーク / www.lifull.blog (16)

  • 小さい経路最適化ミドルウェアを実装してあらゆるAZ間通信を削減する - LIFULL Creators Blog

    KEELチームの相原です。 前回のエントリは「LLMを利用したPlatform Engineering」でした。 www.lifull.blog 今回は、小さい経路最適化ミドルウェアを実装してAZ間通信を削減した話を書きたいと思います。 背景 我々KEELチームはKubernetsベースの内製PaaSであるKEELを開発しており、LIFULLのほとんどのサービスがこのKEEL上で動いています。 www.lifull.blog そして、KEELは巨大なマルチテナントのKubernetesクラスタとしてAWSの複数のAvailability Zone(以下AZ)に展開されていて、多くのmicroservicesが互いに通信しあっています。 そのためAZ間通信はプラットフォームとして重要な関心事の一つです。 レイテンシやAWSのAZ間通信に対する課金を最小限に抑えるため、なるべくAZ間通信を減ら

    小さい経路最適化ミドルウェアを実装してあらゆるAZ間通信を削減する - LIFULL Creators Blog
    toshikish
    toshikish 2024/09/03
  • Kubernetesクラスタの可観測性の隙間を埋めるeBPF - LIFULL Creators Blog

    KEELチームの相原です。 今回はeBPFを利用してKubernetesクラスタの可観測性の隙間を埋めている話です。 前回のエントリではLLMにうつつを抜かしていたので業(?)の話をしようと思います。 www.lifull.blog LIFULLの可観測性の現在地 eBPFとは 可観測性の隙間 NAT Loopback eBPFを実行するには BPF CO-RE libbpf-rsを利用したNAT Loopbackの検知 1. (ユーザ空間) コマンドライン引数として受け取ったDNSをTTLごとに名前解決してIPアドレスを取得する 2. (ユーザ空間) IPアドレスに変化がある度にカーネル空間で動くBPFプログラムにそのIPアドレスのリストを渡す 3. (カーネル空間) Kprobesで tcp_v4_connect/tcp_v6_connect にフックを仕込む 4. (カーネル空間)

    Kubernetesクラスタの可観測性の隙間を埋めるeBPF - LIFULL Creators Blog
    toshikish
    toshikish 2024/01/31
  • ポストモーテム会を行って障害対応の改善を図った話 - LIFULL Creators Blog

    プロダクトエンジニアリング部の吉田と申します。 普段はRubyTypeScriptといった言語を使ったサーバサイドエンジニアをしています。 今回、サイトの閲覧障害をきっかけに行ったポストモーテム会が個人的にとても有意義だと感じたので紹介させてください。 障害分析レポートの紹介 弊社では障害が起きた場合、障害分析レポートを書くという決まりがあります。 この障害分析レポートというものは、一般的にはSREの用語でポストモーテムとして知られている障害対応時のことを記録する文書のことです。 弊社では品質管理を行っている部署がテンプレートやフォーマットを整えてくれており、内容としてはオライリーのSREの付録Dに記載してある「ポストモーテムの例」にかなり似通った内容です。 かいつまんで紹介すると下記のような内容を記載するものです。 障害の概要 影響範囲 タイムライン 水面下で起きていた問題(根の問

    ポストモーテム会を行って障害対応の改善を図った話 - LIFULL Creators Blog
    toshikish
    toshikish 2023/09/30
  • 売却査定サービスにおけるアクセシビリティ対応の取り組み - LIFULL Creators Blog

    プロダクトエンジニアリング部の千葉です。 LIFULL HOME'S不動産査定とホームズマンション売却の開発に携わっています。 この記事では、売却査定サービスにおけるアクセシビリティ対応の取り組みについて紹介していきます。 マンション査定シミュレーション input要素 コンボボックス 所在地選択ダイアログ キーボードフォーカス リストボックス 最後に マンション査定シミュレーション マンション査定シミュレーションは、インターネット上でマンションの価格を調べることができる簡易査定の機能です。 売却計画を立てる際や、不動産一括査定サービス利用時の参考として使用することができます。 LIFULL HOME'Sのマンション査定シミュレーションではマンション名、所在階、専有面積、間取りを入力すると参考価格を算出することができます。 まずは、ここの入力欄要素での取り組みについて紹介します。 inpu

    売却査定サービスにおけるアクセシビリティ対応の取り組み - LIFULL Creators Blog
    toshikish
    toshikish 2023/09/27
  • MySQLの不要データをテーブルローテーションでイージーに削除した - LIFULL Creators Blog

    検索エンジンチームにいながら外部公開APIのメンテナンスもしている加藤宏脩です。 この記事では、毎日大量に書き込まれ膨れ上がったMySQLのテーブルを、 テーブルローテーションさせることで不要なデータを継続的かつ安全に削除する処理の実装をしたのでそれについてお話したいと思います。 利用している技術 Amazon RDS for MySQL Engine version: 5.7.41 Amazon ElastiCache for Redis Engine version: 6.2.6 起きていた問題 LIFULLのとあるサービスは、アプリケーションとMySQLDBの結果をキャッシュするRedisがあるというよくみる一般的なアーキテクチャで運用しています。 このMySQLのテーブルは毎日100万件以上のレコードが追加されていく状態になっており、 総レコード数は6億件を超え、容量は2TBを超

    MySQLの不要データをテーブルローテーションでイージーに削除した - LIFULL Creators Blog
    toshikish
    toshikish 2023/03/22
  • RSpecの技術的負債をチームで解消した話 - LIFULL Creators Blog

    こんにちは、プロダクトエンジニアリング部の鈴木です。 私達のチームでは、リファクタDaysの取り組みとして、APIサーバのテストコード(RSpec)のリファクタリングを行いました。 このリファクタリングにより、テストコードの記述量が大幅に削減され、数年間利用してきたAPIコントローラのテストコードを作業時間にして2週間程度で移行できました。 この記事では、どのようにしてチームでRSpecを改善したのか全体像をお伝えします。 APIサーバが抱えるテスト実装の課題 主な改善内容 ディレクトリ構成を整備・統一する テストの雛形を自動生成する モック・スタブ化をVCRで自動化する テストコードの期待値も自動で作る テストコードから実装の振る舞い以外を追い出す チームでの改善の進め方 まとめ APIサーバが抱えるテスト実装の課題 私達のチームが管理しているサービスでは、バックエンド(APIサーバ)が

    RSpecの技術的負債をチームで解消した話 - LIFULL Creators Blog
    toshikish
    toshikish 2022/04/08
  • 清く正しく「サービス共通ヘッダ・フッタ」を実装する - LIFULL Creators Blog

    フロントエンドエンジニアの嶌田です。今回が LIFULL Creators Blog への初めての投稿です。 「サービス共通ヘッダ・フッタ」は、ただのヘッダ・フッタではありません。ソースコードはいくつものサイトやサービスで使いまわされます。組込み先が持っている CSS によっては表示が崩れてしまうかもしれません。ブレークポイントやコンテンツの幅がそろわないかもしれません。サービス共通で使えるヘッダ・フッタには相応の強さや柔軟さが求められます。 この記事では、LIFULL HOME'S のサービス共通のレスポンシブ版ヘッダ・フッタを実装するために動員した「強く・堅牢に実装するためのノウハウ」を紹介します。 どこにでも組み込めるように実装する 重複しないクラス名ルールを設定する 詳細度や継承とうまく付き合う プレーンな技術を使う ブレークポイントや z-index 等をカスタマイズ可能にする

    清く正しく「サービス共通ヘッダ・フッタ」を実装する - LIFULL Creators Blog
    toshikish
    toshikish 2021/09/28
  • 継続的ドキュメンテーション: Github DiscussionsとADRのすすめ - LIFULL Creators Blog

    こんにちは。テクノロジー部のyoshikawaです。好きなW3C Recommendation は RDF 1.1 Concepts and Abstract Syntax です。 会議やチャットでのやり取りの決定事項・議事録、アプリケーションや機能の設計書・仕様書、READMEなどなど... LIFULLの開発現場においては、ソースコード以外にもこのように様々な文書の管理・蓄積(=ドキュメンテーション)を実施しています。 多くの開発者・メンバーがドキュメンテーションの重要性やその恩恵は理解はしているものの、なかなかうまく情報の蓄積・管理ができない、 その結果、質的ではない調査に時間を取られてしまいDeveloper Experienceが下落してしまう。 このような課題を抱えているプロジェクトやチームは世の開発現場において少なからず存在すると思います。 LIFULLの開発現場にもこの

    継続的ドキュメンテーション: Github DiscussionsとADRのすすめ - LIFULL Creators Blog
    toshikish
    toshikish 2021/09/18
  • エンジニアのスキルアップのモチベーションを向上させた4つの取組み - LIFULL Creators Blog

    こんにちは。プロダクトエンジニアリング部でエンジニアリングマネージャーをやっている野澤です。現在LIFULLのプロダクトエンジニアリング部では個人のスキルを高めることを目標の一つとして取り組んでいます。 この記事を読んでいる皆さんもご承知のとおり日々技術は進歩しており、追いついていくのも大変です。当たり前のことかもしれませんが、個人のキャリアのためにも、企業間の激しい競争に負けないためにも、また企業の理念を実現するためにもエンジニアには高い技術力が要求されます。 もちろん自分で勉強して、新しい仕事にも挑戦して、勝手に成長していくエンジニアもいますが、全員が全員そういうわけではないと思います。 前職でも、なかなかスキルアップできないメンバーをどうやって成長させるか私自身思い悩んだ経験があります。例えば、スキルアップ目標を掲げても行動しない、忙しくて時間が取れない、気が向かない、何が嬉しいのか

    エンジニアのスキルアップのモチベーションを向上させた4つの取組み - LIFULL Creators Blog
    toshikish
    toshikish 2021/08/28
  • LIFULLでの1on1: 「特に話したいことはありません」を解決した話 - LIFULL Creators Blog

    こんにちは。LIFULLのプロダクトエンジニアリング部の野澤です。エンジニアリングマネージャーをやっています。 LIFULLでは組織構造として部の下に「ユニット」があり、その下に「グループ」がぶら下がっています。 今期からは私はユニット長を拝命し、間接マネジメントを行うようになりました。 マネジメント業務の中でも1on1は部下のモチベーション維持やキャリア形成、戦略理解を促進させるために重要な手法です。 グループ長時代も1on1はやっておりましたが、間接マネジメントをやるにあたり、メンバーからは相談がしにくくなってしまったようで、「特に話したいことはありません」となってしまうことが増えていきました。 そこで改めて1on1を有意義にするためにはどうしたらいいか考えてみました。この記事ではそのための取り組みを紹介できればと思います。 LIFULLでの1on1 1on1は今やいろんな業界や会社で

    LIFULLでの1on1: 「特に話したいことはありません」を解決した話 - LIFULL Creators Blog
    toshikish
    toshikish 2021/05/01
  • Clean Architectureを採用したBackend For Frontendの開発とこれまでの所感 - LIFULL Creators Blog

    こんにちは。テクノロジー部のyoshikawaです。好きなLinux DistributionはManjaro Linuxです。 今回はレガシー化が進むLIFULLのメインサービスの開発効率の向上とコードベースの健全性の確保をすべく、Clean Architectureを採用しバックエンドを刷新している取り組みについて紹介させていただきます。 なお、Clean Architecture自体の説明および解説は記事では行いません。 背景:歴史あるバックエンドの刷新 アプローチ:新たなアーキテクチャと共創 採用したアーキテクチャ・技術 Clean Architectureを採用した理由 TypeScriptを採用した理由 LoopBackを採用した理由 Clean Architectureの実践 レイヤー分け:例の図と新BFFアーキテクチャのレイヤーとのマッピング レイヤー内・レイヤー間:独

    Clean Architectureを採用したBackend For Frontendの開発とこれまでの所感 - LIFULL Creators Blog
    toshikish
    toshikish 2021/03/16
  • 生産性・技術的負債をMetabaseで可視化した話 - LIFULL Creators Blog

    技術開発部の清水です。好きなべ物は広島風お好み焼きと広島県産牡蠣と広島県産穴子です。 拡張に次ぐ拡張でサービスは便利なものに成長していく一方でソースコードは次第に複雑になっていきます。 そのまま放っておくと積み上げた技術的負債により開発コストが上がっていき、最悪の場合にはサービスの発展を停止させてしまう可能性もあります。 このような理由から、弊社では技術的負債を着実に返済していくべく生産性・技術的負債の可視化をMetabaseで行っています。 可視化する情報元はGithub API、CodeClimateQuality APIの2つのみです。 生産性の可視化 流ブランチにマージされたPR数(生産数) 流ブランチにマージされたPRによる意味のある変更行数(生産規模) 流ブランチにマージされたPRの平均レビュー応答数(生産を助けた人員の労力) 流ブランチにマージされた「1コミッターあ

    生産性・技術的負債をMetabaseで可視化した話 - LIFULL Creators Blog
    toshikish
    toshikish 2021/01/22
  • 自動テストの効果測定に使われるEMTEとは? - LIFULL Creators Blog

    こんにちは! LIFULLのSETエンジニアのRueyです! 今年の3月にISTQBの自動化エンジニア資格 CTAL-TAE(Advanced Level Test Automation Engineer)を取得しました。TAEの勉強で自動テストの効果を測るメトリクスが幾つかあることが分かりました。その中で工数を測るメトリクスをEMTE(Equivalent Manual Test Effort)単位で表現することが推奨されています。しかし、その時は説明を見てもこれに換算すれば何か嬉しいか分かりませんでした。 ちょうどある開発グループで自動テストを導入する案件がありましたので、実際のプロジェクトでメトリクスを計測し検証してみました。様々な知見が得られたので、今回はこの単位の紹介と使用例を紹介したいと思います。 目次 はじめに 自動テストのメトリクス EMTEとは EMTEを使って表すことが

    自動テストの効果測定に使われるEMTEとは? - LIFULL Creators Blog
    toshikish
    toshikish 2020/10/19
  • 技術的負債の返済の足がかりにテンプレートのParserを作った話 - LIFULL Creators Blog

    プロダクトエンジニアリング部の中島です。 今回はフロントエンドのテンプレート部分についての負債やレガシーな機構に対する改善の取り組みについて紹介させていただきます。 背景 LIFULL社のメインサービスであるLIFULL HOME'SのメインリポジトリのサーバサイドはSymfony + Twig(※テンプレートエンジン)の構成を採用しています。 このリポジトリの歴史は古く、2011年頃から開発は行われており、今となってはレガシーな機構であったり、開発体験を損ねる負債的な記述も多くあります。 テンプレート部分で多くみられる問題のうちいくつかをピックアップすると弊社ではこのようなものが悩みのタネになっています 変数などを用いた動的な部分テンプレートの呼び出しによるgrepしやすさの低下 部分テンプレートをロードするときにスコープ制御(Twigだとonly属性)をつけ忘れてテンプレート間依存関係

    技術的負債の返済の足がかりにテンプレートのParserを作った話 - LIFULL Creators Blog
    toshikish
    toshikish 2020/09/26
  • LIFULLを支えるKubernetesエコシステムまとめ 2020年版 - LIFULL Creators Blog

    技術開発部の相原です。 以前にブログで書きましたが、LIFULLでは主要サービスのほぼ全てがKubernetesで稼働しています。 www.lifull.blog Kubernetesをアプリケーション実行基盤として番運用するためにはデプロイやモニタリング・ログ、セキュリティなど考えることが多くどこから手を付ければよいか困ることがあるでしょう。 そこで今回は既に数年の運用実績のあるLIFULLのアプリケーション実行基盤で利用しているKubernetesエコシステムについて紹介します。 全て書くと数が膨大になるので今回はクラスタ周りを中心に、必要とするソフトウェアの数が多いモニタリング・ログまでとします。(それでも大作になりそうですが...) kubernetes/kops projectcalico/calico coredns/coredns node-local-dns kubern

    LIFULLを支えるKubernetesエコシステムまとめ 2020年版 - LIFULL Creators Blog
    toshikish
    toshikish 2020/08/03
  • Istio を本番環境に導入するまで - LIFULL Creators Blog

    こんにちは、技術開発部の相原です。 この記事は LIFULLアドベントカレンダー の16日目です。 LIFULL では アプリケーション実行基盤を刷新すべく、Istio がバージョン 0.2.0 の頃から検証を開始し、現在 1.0.4 を利用しています。 AWS 上で kops を利用して Kubernetes を構築しその上に Istio を展開するという構成です。 EKS は利用していません。 ここに至るまでそれなりにハマりどころ、考慮すべき点に遭遇したので今回はそのことについて書きたいと思います。 以下の文章は kops 1.10.0 Kubernetes 1.10.11 Istio 1.0.4 を前提としていることをご了承ください。 はじめに 番導入までの障壁 istio-proxy のオーバーヘッド Resource Quota を有効化した時に Istio の Sidecar

    Istio を本番環境に導入するまで - LIFULL Creators Blog
    toshikish
    toshikish 2018/12/17
  • 1