タグ

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

  • LIFULL HOME'S 賃貸物件詳細ページの基盤刷新について - LIFULL Creators Blog

    プロダクトエンジニアリング部の海老澤です。 普段は LIFULL HOME'S の賃貸部門のフロントエンド開発をしています。 近年、LIFULL の開発部門では「開発生産性」という言葉が取り沙汰されるようになりました。 LIFULL HOME'Sの主要リポジトリは10年以上運用され続け、今も多くの開発者によって日々改修され続けています。 長い年月の中で小さな設計ミスも積み重なって大きくなり、ちょっとした実装でも入念な調査が必要となり開発生産低下の要因となっていました。 また10年以上前に採用したフレームワークで稼働しているため、今ではドキュメントを探すのも一苦労という具合です。 そこで主要開発部門では「自部門の機能はマイクロサービスへと切り離し、各々で面倒を見る」という方針になりました。 賃貸部門も同様に機能の切り離しを始め、先日「物件詳細ページ」のマイクロサービス化を行いました。 今回は

    LIFULL HOME'S 賃貸物件詳細ページの基盤刷新について - LIFULL Creators Blog
  • 清く正しく「サービス共通ヘッダ・フッタ」を実装する - LIFULL Creators Blog

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

    清く正しく「サービス共通ヘッダ・フッタ」を実装する - LIFULL Creators Blog
  • コマンド1発でKubernetes上にProduction Readyな環境を手に入れる - LIFULL Creators Blog

    KEELチームの相原です。 最近開発している コマンド1発でKubernetes上にProduction Readyな環境を手に入れる コードジェネレータの話です。 Kubernetesの利用を広める上での課題 Kubernetes Manifestの難しさ 既存の解決策 設定量の増大 コードジェネレータで解決する 捨てやすさ 抽象度 変更への追従しやすさ Open Application ModelとKubeVela keelctl を開発してきてみて Kubernetesの利用を広める上での課題 KEELチームが開発しているアプリケーション実行基盤は巨大なMulti Tenancy Kubernetesクラスタをベースとしていて、各アプリケーション開発者はKubernetes Manifestといくつかの設定を記述するだけでProduction Readyな環境ですぐにアプリケーション

    コマンド1発でKubernetes上にProduction Readyな環境を手に入れる - LIFULL Creators Blog
  • DB移行プロジェクト、Oracle DatabaseからPostgreSQLへ、技術負債を解消する - LIFULL Creators Blog

    こんにちは!テクノロジー部基盤開発ユニット改善推進グループ所属の王です。 基盤開発ユニットは常にLIFULLの各種サービスが依存する基盤システムの構築と改善のために、いろいろな取り組みをしています。 www.lifull.blog www.lifull.blog www.lifull.blog 今回は技術負債の解消の一つである、DB移行プロジェクトの詳細について紹介します。 DB移行プロジェクトとは? 現在LIFULL HOME'Sの各種サービスが依存している中心的なデータベースをOracle DatabaseからPostgreSQLに置き換えることを推進しているプロジェクトです。 背景の詳細は省略しますが、現状のDB運用体制を続けると会社の事業発展のボトルネックとなることが予想されているので、運用コストの削減、開発効率およびパフォーマンス改善の面から移行の必要が出てきています。 プロジ

    DB移行プロジェクト、Oracle DatabaseからPostgreSQLへ、技術負債を解消する - LIFULL Creators Blog
  • 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
  • HTML Centricで行きたい私たち - LIFULL Creators Blog

    LIFULLの中島です。 近頃、LIFULL HOME'Sのフロントエンド(ここではJavaScriptのみを焦点とします)もようやく進む道を見出し、そろそろ設計方針を一新しようと試みています。 今回はそれについて話したいと思います。 現在の私たちの課題感 私たちの管理する多くのレガシーコードはDOM操作ライブラリとしてjQueryを、UI設計の格子としてBackbone.Viewのような設計方式を導入しています。 (もちろんそうでないマイクロサービスも多くありますが) 具体的なコード例を示すことこんな感じになります let Slider = Backbone.View({ events: { '.next click': 'next', '.prev click': 'prev' }, next() { this.$(...).css({left: '111px'}); }, ... }

    HTML Centricで行きたい私たち - LIFULL Creators Blog
  • 自動テストの効果測定に使われる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
  • クリーンアーキテクチャの各概念を定食屋で表現する - LIFULL Creators Blog

    プロダクトエンジニアリング部のカマトです。 普段はマーケティング・エンジニアとして、LIFULL HOME'SでLINEやメールを活用したサービスの開発に従事しています。 今回は業務でシステムの刷新を行う中で、アーキテクトにクリーンアーキテクチャを採用し初めて経験しましたのでこちらについてお話しをさせていただきます。 新しいアーキテクトに触れるときは、このレイヤーは何を担当しどのような概念でどのような機能を持たせればいいのか?と理解するをするまでいつも苦戦するのですが、クリーンアーキテクチャは特に登場人物が多く今まで以上に大変でした。 このクリーンアーキテクチャの処理の流れを日常のものに置き換えれば、別な視点で理解が深まるのではと考え、各レイヤーの概念を定屋のフローに落とし込んで表現をし振り返りをしてみようと思います。 参考にしたイメージ図に沿ってのレイヤーと概念ですので、これにそってな

    クリーンアーキテクチャの各概念を定食屋で表現する - LIFULL Creators Blog
  • 技術的負債の返済の足がかりにテンプレートのParserを作った話 - LIFULL Creators Blog

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

    技術的負債の返済の足がかりにテンプレートのParserを作った話 - LIFULL Creators Blog
  • 【実録】誰でもできる!AWSコスト最適化の流れと考え方 - LIFULL Creators Blog

    AWS利用の最適化に従事してます、鈴木(@szk3)です。 最適化といってもいろいろありますが、ここ最近はAWSにおけるコスト削減についていろいろと行ってきました。 LIFULLのアカウント数は100を超えます。それらのアカウントに対し、約240以上のコスト削減案を立案し180件以上の施策を完了させてきました。 今回は、この新型コロナの影響で先行きが不透明な中、AWS利用費用を見直したいという方のために、 実体験に基づいたAWSコスト最適化の流れと考え方をシェアしたいと思います。 コスト削減の流れ いろいろとやってきましたが、コストを削減する流れはどれも同じです。 現状を知る ソリューションを選ぶ 実行する めちゃくちゃシンプルですね。 ひとつづつ見ていきましょう。 現状を知る コストを削減するにあたり、最も重要なのはどこにコストが掛かっているかを知ることです。 「無い袖は振れない」ので、

    【実録】誰でもできる!AWSコスト最適化の流れと考え方 - LIFULL Creators Blog
  • 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
  • Python版CausalImpactを用いたTVCMの効果検証 - LIFULL Creators Blog

    こんにちは。LIFULLでデータアナリストをしている宮野です。 普段はサービス周りのデータ分析を行っているのですが、TVCMの効果検証を行う機会があり、その際CausalImpactという時系列因果推論フレームワークを使用したのでご紹介いたします。 【目次】 はじめに Pythonを用いたCausalImpact データの準備 効果検証 共変量の確認と選定 / 周期性(シーズナリティ)の付与 ①共変量 ②周期性(シーズナリティ) RのCausalImpactとの結果比較 RでのCausalImpact実装 PythonとRの検証結果比較 おわりに はじめに CausalImpactとは? →Googleがリリースした時系列因果推論の"R"パッケージです。 そう。Rのパッケージです。当然Rを使って効果検証を行うのが通常だと思います。 なのですが、私自身Pythonを使用することが多く、どうせ

    Python版CausalImpactを用いたTVCMの効果検証 - LIFULL Creators Blog
  • ゼロから品質組織を立ち上げてきた話 - LIFULL Creators Blog

    こんにちは!品質改善推進ユニットの藤澤です。 この記事はLIFULLアドベントカレンダー3の15日目です。 今年のアドベントカレンダーは何を書こうかと考えていたところ、CTOからお題が飛んできました。 ゼロから立ち上げてきたというのは正しくなく、最初に立ち上げた方は他にいまして、取り組みの一つひとつもみんなの積み重ねですが、現在この組織で歴史を一番長く知っている人間として、代表してLIFULLの品質組織の歴史や取り組みをご紹介したいと思います。 誰に何を伝えたいか 品質管理・品質保証の仕事は正解がありません。ビジネスドメインや会社の文化、構造によって、やるべきことは変わってきます。 しかし事業会社における品質担当者が実際どんな仕事をしているかについての情報は、勉強会が盛んな現在においても、見かける機会が多くありません。 そこで、この記事では当社の品質組織に関して、これまでの歴史や取り組みを

    ゼロから品質組織を立ち上げてきた話 - LIFULL Creators Blog
  • LIFULLが主要サービスの(ほぼ)全てをKubernetesに移行するまで - LIFULL Creators Blog

    技術開発部の相原です。好きな --feature-gates はServiceTopologyです。 この記事はLIFULLアドベントカレンダーの16日目です。 去年のエントリではIstio番環境に導入するまでと題して、私のチームが進めているアプリケーション実行基盤刷新プロジェクトでのIstioの導入についてお伝えしました。 移行に至るまでの経緯などはそのエントリをご覧ください。 あれからしばらくが経ち、ようやく主要サービスの(ほぼ)全てをKubernetesに移行することができましたので今回は移行を実現するまでに行った取り組みを紹介したいと思います。 移行にあたってやったこと 健全化 構成の見直し アプリケーションサーバの見直し Containerize SIGTERMへの対応 環境ごとの値を外から与えられるように 可観測性の向上 Prometheus Exporter実装による可

    LIFULLが主要サービスの(ほぼ)全てをKubernetesに移行するまで - LIFULL Creators Blog
  • Visual Testingに最適な画像差分検知ツール「Gazo-san」をOSS化しました - LIFULL Creators Blog

    こんにちは! LIFULLのSETグループ (Software Engineer in Testグループ)のRueyです。 前回はE2Eテストで使うテストフレームワーク「Bucky」を公開しました! www.lifull.blog そして今回はVisual Testingで使う画像差分検知ツール「Gazo-san」を公開しました! github.com この記事はVisual Testingと「Gazo-san」のポイントを紹介したいと思います。 目次 Visual Testingについて なぜVisual Testingが必要か Visual Testingツールの三要素 撮影機能 📷 差分検知機能 🔍 レポート機能 📑 E2Eテストとの違い E2Eテストは動作の保証、Visual Testingは見た目の保証 Visual Testingはメンテナンス不要 LIFULL SETグ

    Visual Testingに最適な画像差分検知ツール「Gazo-san」をOSS化しました - LIFULL Creators Blog
  • LIFULLのCTOの考えるエンジニアマネジメント - LIFULL Creators Blog

    CTOの 長沢 です。 この記事はLIFULLアドベントカレンダーの11日目です。 現在LIFULL(単体)は正社員160名超のエンジニアの組織になっており、それぞれ特徴的で素晴らしいメンバーが沢山在籍しています! そのような組織の中で、CTOとしてエンジニア組織や戦略を考えることが多いのですが、 今回は、マネジメントしてきた中で、経験から学び今現在も意識している育成に関することを抜粋して書こうと思います。 CTOとしてやってきたことなどの取り組みは、 昨年のAWSJさんが主催のCTO Night&Dayイベントで登壇させていただいた時の資料なども合わせてご覧いただければと嬉しいです! 【CTO Night&Day 2018】CTOとしてエンジニアに対して責任を持ち続けること from LIFULL Co., Ltd. www.slideshare.net こちらのような話は、また、別記事

    LIFULLのCTOの考えるエンジニアマネジメント - LIFULL Creators Blog
  • 自動システムテストツール「Bucky」OSS化までの道のり - LIFULL Creators Blog

    こんにちは!LIFULLのSoftware Engineer in Testグループ(通称:SETグループ)のヒキモチです。 我々SETグループは先日、自動システムテストツール「Bucky」のOSS化を行いました! github.com github.com Buckyは元々社内の自動テストツールとして使われていたものなので、 それをOSSとして公開するためには色々と苦労がありました。 この記事ではその苦労やそこで得た知見などを共有できたらと思います。 目次 そもそもなぜOSS化するのか OSS化までの道のり 1. リファクタリング 2. システムテスト導入 3. RubyGems.orgへの登録 公開後のお話 使い手のことを考えられていなかった 問題 解決策1:ハンズオン資料を作成 解決策2:READMEの構成を変更 ruby version gem release 自動化 最後に そも

    自動システムテストツール「Bucky」OSS化までの道のり - LIFULL Creators Blog
  • 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
  • zipkinのバックエンドをAmazon Elasticsearch Serviceに変更してみた - LIFULL Creators Blog

    こんにちは、AmazonESでElasticsearch2.3を使っての環境構築が終わった直後にElasticsearch5.1が利用可能になってショックを受けてる技術基盤部の磯野です。 ちょっとだけ時間ができたのでzipkinのバックエンドをAmazon Elasticsearch Serviceに差し替えてみました。 CassandraとElasticsearchどっちにしようかなぁと悩んでいたのですが、zipkinがいつの間にかElasticsearch Serviceに対応していたのでサーバー構築したくない病発症中のためノータイムでElasticsearch Serviceに決定しました。 Amazon Elasticsearch Serviceの起動 アクセスポリシー zipkinサーバーの設定 zipkinサーバーのIAM Roleの設定 設定を変更してみて インスタンスの負荷

    zipkinのバックエンドをAmazon Elasticsearch Serviceに変更してみた - LIFULL Creators Blog
  • 班分けAI - LIFULL Creators Blog

    こんにちは、MAM開発グループの椎橋です。 MAMとはマーケティングオートメーションの略で、マーケティングに関する機械学習アルゴリズムを作ったり、データ分析をして改善につなげたりしています。 今回は社内制度のクリエイターの日を2日間利用して、社員旅行の班分けの最適化モデルを作りました。 以前はこの制度を利用してサーバ・ミドルウェアの勉強をしました。 nextdeveloper.hatenablog.com 弊社の社員旅行は多くの社員が参加し、最高に盛り上がる大イベントです。 社員旅行委員が予算の見積もりからスケジュールまで計画を立ててくれるのですが、 そのスケジュールの中にアクティビティと呼ばれるイベントがあります。 これは班に分かれて観光やスポーツなどを楽しむというもので、私は昨年そば打ちを体験しました。 複数あるアクティビティのうち参加できるのは一つだけな上に、人数の上限が設定されてい

    班分けAI - LIFULL Creators Blog