ブックマーク / blog.recruit.co.jp (143)

  • チームの基盤にCloud NATを導入しました

    CETチーム のやむやむです。 この記事は、リクルートライフスタイル Advent Calendar 2019 の24日目の記事です!メリークリスマス! 昨日の記事は龍野さんによるWorkload Identityの実基盤への導入でした。 私たちのチームではGKEを使ったAPI基盤やCloud Composerを使ったJob基盤を提供しており、社内のエンジニアがこの基盤上で番サービス向けの機能を開発しています。 この基盤のNATはGoogle Compute EngineのVMで稼働していましたが、自分たちでNATの管理をするのは運用コストが高く、またスケーラビリティも考慮できていないといった問題がありました。 そんな時、GCPからクラウドマネージドなNATであるCloud NATの提供が開始されたためこれを機にCloud NATへ移行しようということになりました。 しかし私たちの基盤で

    チームの基盤にCloud NATを導入しました
    yug1224
    yug1224 2019/12/24
  • 新規サービスを支えるための運用と、運用に使用する技術を考える

    記事は リクルートライフスタイル Advent Calendar 2019 22日目の記事です。 飲領域で新規プロダクトを開発している伊芸です。 私はこれまではずっと大規模プロダクトのインフラの構築・運用を担当していました。今年になって初めて新規プロダクト開発を担当させてもらい、新たな環境・小さなチームで動くことになり、戸惑いや悩みが多々ありました。 この記事では、人的・時間的リソースが限られた中で、DevOpsの何にこだわり、何を妥協するのかを明確にするまでの葛藤と、そこから得られた学びについて、共有します。なお、以下で述べることは教科書的な話ではなく、同じ悩みを持つ読者に向けた一事例でしかないことをご了承ください。 今回担当した新規プロダクト開発チームの特徴 新規サービスを作る際にはMVPを作り小さく検証を繰り返すことはよく採られる手法かと思われます。その場合、できるだけ早くユーザ

    新規サービスを支えるための運用と、運用に使用する技術を考える
    yug1224
    yug1224 2019/12/23
  • Workload Identityの実基盤への導入

    Workload Identityの実基盤への導入 10年後に番環境でやらかしちゃった人 Advent Calendar を書かないために 記事は リクルートライフスタイル Advent Calendar 2019 23日目の記事です。 CETチーム の龍野です。 我々のチームでは GKE (Google Kubernetes Engine) を利用した基盤開発が盛んに行われております。 Kubernetes は可用性の高さや複数アプリケーションの実行など、多くのメリットがあるのですが、一方で、 GKE 内で多くのサービスが走ることによって、個々の権限管理などが煩雑になってきます。 そこで、記事では、 GKE 内のサービスでの権限管理をより楽に、堅牢に行うことのできる Workload Identity という仕組みについて紹介します。チーム内での利用事例や、実際に Workload

    yug1224
    yug1224 2019/12/23
  • PulumiにおけるServerlessアプリケーション開発

    記事は リクルートライフスタイル Advent Calendar 2019 21日目の記事です。 こんにちは!先月のKubeConのセッションを消化しきれないままの年越しを危惧している小谷野(@bandwagondagon)です。 みなさんのチームでは、インフラリソースのプロビジョニングには何かツールを使っていますでしょうか? 弊社ではTerraform Enterpriseの導入事例で取り上げているようにTerraformを利用しているチームが多いです。 TeraformはHCLによってインフラコードを記述するプロビジョニングツールです。このHashiCorp社製言語のHCLは、開発者によって作成・変更がしやすく、さらにJSON互換でマシンフレンドリーという設計思想に基づいて開発されています。 一方、最近はAWS CDK がGAになったり、PulumiのVer1.0がリリースされたりな

    PulumiにおけるServerlessアプリケーション開発
    yug1224
    yug1224 2019/12/23
  • Airシフトをより良くするためにチームで取り組んでいること | Recruit Tech Blog

    はじめに 記事は Recruit Engineers Advent Calendar 2019 – Adventar 21日目の記事です。 リクルートテクノロジーズの 辻 健人です.GitHubではmaxmellonで活動しています. 記事では,Airシフトをより良くするために実施していることを紹介します.技術的な改善につきましては,web.dev – five-ways-airshift-improved-their-react-app で紹介されたりもしました. この記事では,チームをどのようにしてより良い方向性にもっているかを紹介していきます. Airシフトとは Airシフトは,シフト表の作成はもちろん,スタッフとのやりとりや細かな調整業務もラクになるシフト管理サービスです. 直感的に操作できるシンプルな画面で,簡単にシフト作成が行えます.シフト表と一体となったチャットを使ってス

    Airシフトをより良くするためにチームで取り組んでいること | Recruit Tech Blog
    yug1224
    yug1224 2019/12/21
  • TwitterやSlackのRedux Storeを覗く

    { domainData1 : {}, domainData2 : {}, appState1 : {}, appState2 : {}, ui : { uiState1 : {}, uiState2 : {}, } } ref: Basic Reducer Structure and State Shape · Redux 正規化 Recipesでは正規化についても言及しており、リレーショナルデータを管理する場合はデータベースのように正規化することを推奨していました。 以下は投稿が複数のコメントを持つ例です。postsはcommentsのidだけを持っています。 { posts : { byId : { "post1" : { id : "post1", author : "user1", body : "......", comments : ["comment1", "comment

    TwitterやSlackのRedux Storeを覗く
    yug1224
    yug1224 2019/12/20
  • 業務で採用してみたいiOSアプリのアーキテクチャと技術

    はじめに こんにちは、初めまして、iOSアプリエンジニアのtasaiです。この記事は リクルートライフスタイル Advent Calendar 2019 19日目の記事です。私は入社したばかりなので業務で使っている技術についてではなく、業務で採用してみたいiOSアプリのアーキテクチャと技術についてご紹介します。 前提 業務でMVVMでのアプリリニューアルやVIPERでのリアーキテクチャをしてきた経験をもとに、クロスプラットフォーム技術の採用を視野に入れて検討した内容となります。 解決したい課題 モバイルアプリの開発において継続的に改善を行うようなプロダクトでは、以下のような課題があるのは珍しいことではないかと思います。 長年の運用で溜まっていた技術的負債 ユニットテスト/UIテストコードが書きづらい責務分割 そもそも設計方針が決まっていなかったり、複数のアーキテクチャを抱えたりしている A

    業務で採用してみたいiOSアプリのアーキテクチャと技術
    yug1224
    yug1224 2019/12/19
  • 障害対応からOSSへコントリビューションを行った時の話 | Recruit Tech Blog

    Pulling xxxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/xxxxx:latest (attempt 3 of 3)... Error response from daemon: Get https://xxxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/v2/: dial tcp: lookup xxxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com on 172.18.0.3:53: read udp 10.254.0.122:48372->172.18.0.3:53: i/o timeout デプロイまでのフローは ボタンクリックすると、 git clone -> docker build -> docker push -> k8

    障害対応からOSSへコントリビューションを行った時の話 | Recruit Tech Blog
    yug1224
    yug1224 2019/12/18
  • 仕様理解度を可視化した話

    この記事は、リクルートライフスタイル Advent Calendar 2019の18日目の記事です。 こんにちは。 リクルートライフスタイルの飲領域の開発マネジメントグループに所属している石坂です。 飲プロダクトの中でもAirレジ ハンディとAirメイトを担当しています。 、別記事で紹介されていたLT大会で「ドキュメントと戦う技術 -暗黙知の育て方-」というタイトルで発表し、得票数で同率優勝しました。 タイトルは少し攻めていますが、内容は仕様を記憶に定着させるための以下の施策の紹介です。 ペアプロ/モブプロ チーム内勉強会 仕様クイズ 仕様理解度マップ この記事ではその発表内容の中から"仕様理解度マップ"について取り上げます。 仕様理解度マップとは プロダクトの機能一覧に対してチームメンバーがどれくらい理解しているかをレベル化したものです。 スキルマップの仕様版だと考えると想像しやすい

    仕様理解度を可視化した話
    yug1224
    yug1224 2019/12/18
  • サーバ上でHTMLから画像に変換する方法を比較してみた

    記事は リクルートライフスタイル Advent Calendar 2019 の 17 日目の記事です。 こんにちは! 新卒でリクルートライフスタイルに入社し、Airレジ ハンディ のサーバサイドの開発を担当している松尾です。 現場に配属されて早々、Airレジ ハンディのとあるエンハンス案件を任せてもらえることになりました。 実装すべき処理を洗い出していく中で、「サーバサイドで動的に画像を生成して出力する」という処理が必要になることが分かりました。 上図のように、クライアントから送られてきたデータと、サーバ側で持っているテンプレートを用いてレンダリングし、生成した画像を返却するというイメージです。 レイアウトやレンダリングにはいくつかの方法が考えられます。 描画系 APIJava なら Graphics2D など)で地道にレイアウトすることもできますが、リッチなレイアウトになると実装が大

    サーバ上でHTMLから画像に変換する方法を比較してみた
    yug1224
    yug1224 2019/12/17
  • Monitoring as Code for Kubernetes

    この記事は? この記事は、リクルートライフスタイル Advent Calendar 2019 の16日目の記事です! 自分が所属している CETチーム で、Kubernetes を中心としたアーキテクチャにおける Monitoring as Code を実現した監視基盤の紹介をしたいと思います。 自分の所属するチームでは、バッチ基盤や API 基盤を GKE 上に構築しています。 この記事では、Terraform・Grafana・Prometheus・Jsonnet を利用して、Kubernetes のリソース監視・Job の実行状態・API レイテンシのモニタリング・外形監視などを改善したアーキテクチャやフローを紹介したいと思います。 Who am I ? @ko-da-k (Twitter: @ko_da_k) です。新卒2年目で、1年目は主にデータ解析やモデリング等を行っており、現在

    Monitoring as Code for Kubernetes
    yug1224
    yug1224 2019/12/16
  • AWS re:Invent 2019 参加レポート

    yug1224
    yug1224 2019/12/16
  • 年末LT大会を開催しました

    記事は リクルートライフスタイル Advent Calendar 2019 15日目の記事です。 こんにちは。飲領域でテックリードをしている浅野です。 突然ですが皆さん、LTしてますか? 弊社では各グループの定例会議における1コンテンツとして、メンバーの持ち回りでLTをやっているところも多いです。 私の所属する飲開発グループでも例に漏れず週次でLTが開催されているのですが、先日 「令和元年 飲開発LT大会」 と題したLTイベントを開催したため、今回はそれについて紹介させていただこうと思います。 きっかけ 前述の通り、飲開発グループでは普段から定常的にLTの場があります。 毎週2人ずつ発表の枠があるのですが、ありがたいことに年々グループの人数が増えてきており、今では20人を超えるほどになってきたことから、四半期に一回順番が回ってくるかどうか、という状態になっていました。 そのため普

    年末LT大会を開催しました
    yug1224
    yug1224 2019/12/16
  • Node.jsの非同期I/Oについて調べてみた

    こんにちは、記事は リクルートライフスタイル Advent Calendar 2019 13 日目の記事です。今日は sadnessOjisan がやっていきます。この記事では Node.js の非同期 I/O について調べたことを紹介します。 調べようと思ったきっかけは、先日の JSConfJP で Wrap-up: Runtime-friendly JavaScriptというランタイムレベルでの最適化を解説したセッションを見て Node.js の理解を深めたいと思ったからです。私は Node.js でのコーディングは多少経験がある程度なので、まずは Node.js の大きな特徴である非同期 I/O からキャッチアップすることにしました。 Node.js の大きな特徴 Node.js は公式の説明を借りると、スケーラブルなネットワークアプリケーションを構築するために設計された非同期型の

    Node.jsの非同期I/Oについて調べてみた
    yug1224
    yug1224 2019/12/13
    統合開発環境さんさすがだ
  • RubyWorld Conference 2019 で登壇しました

    yug1224
    yug1224 2019/12/13
  • Babel が行っている Polyfill の仕組みについて

    アプローチの 1 つである Polyfill による互換実装は、もうアップデートされない IE11 の対応や言語仕様を追従し続ける各ブラウザの実装差分をサポートするとても便利なアプローチなのですが、ブラウザに代わり自ら互換実装を行うため副作用が伴うこともあります。 副作用によって不具合が発生した場合、どのように互換実装をしているのかを理解していないと解決が困難な場合もあるので、 Babel の基的な処理を追いつつ Polyfill について説明していきます。 なお、この記事の内容は以下のバージョンを元に記述しています。そのため Babel 7.4.0 で非推奨となった @babel/polyfill には触れません。 Babel 7.7.4 core-js 3.4.7 Babel の基的な処理の流れ まずは Babel を利用した Polyfill による互換実装を簡単に追ってみましょ

    Babel が行っている Polyfill の仕組みについて
    yug1224
    yug1224 2019/12/12
  • Datadogによるバッチの監視

    実行が終わらない状態の監視方法 改善内容としては、実行が終わらない状態を監視できるようにすることにしました。 まずはじめに考えたのは、起動しない状態の監視と同様の方法です。 各バッチの実行時間の閾値をDBに保持して、閾値を超えていないかチェックするバッチを定期的に実行することで、実行時間が長くなっているバッチを検知する方法です。 しかしながら、この方法では閾値の変更にDBへのアクセスが必要になったり、通知先の変更にバッチの改修が必要になったりと変更ハードルが高くなってしまいます。 そこで次に考えたのは、Datadogを使った監視方法です。 システム監視にはすでにDatadogを導入しており、バッチの監視にも導入することで通知設定の集約と柔軟性にメリットがあると感じました。 実行時間をDatadogに送る方法 カスタム Agent チェックを作成することで、一定の間隔でバッチの実行時間を

    Datadogによるバッチの監視
    yug1224
    yug1224 2019/12/12
  • Android 10で追加されたBubblesについて

    記事はリクルートライフスタイル Advent Calendar 2019の12日目の記事です。 ホットペッパービューティーのネイティブアプリ開発を担当している中里です。この記事では、Android 10で追加されたBubblesの使い方と、使ってみた感想を書きたいと思います。 Bubblesとは? Bubblesとは、Facebook Messengerのように他のアプリの上に描画する機能で、日語だと「ふきだし」と訳されています。 https://developer.android.com/guide/topics/ui/bubbles 従来このようなUIを実現するためには、 SYSTEM_ALERT_WINDOW という権限が必要でしたが、 SYSTEM_ALERT_WINDOW は強い権限であり、また電池消費の観点からも不利であるため、それを代替するためにAndroid 10から登

    Android 10で追加されたBubblesについて
    yug1224
    yug1224 2019/12/12
  • React 本体のみで Redux フレンドリーな非同期処理を実現するアイデア | Recruit Tech Blog

    こんにちは。2019 年 10 月に join した kazuma1989 です。スタディサプリENGLISH の Web 版を担当するフロントエンドデベロッパーです。 今回は、React と Redux を用いたアーキテクチャーで問題になる 非同期処理 を扱うアイデアの一つをご紹介します。Redux フレンドリー と題したように、Redux でなくとも(useReducer や unstated-next でも)適用することができます。 アイデアを EffectComponent と名付けました。そもそも Redux において非同期処理の何が問題なのか、そして EffectComponent とは何か説明します。React Hooks と Redux についてある程度知っていることを前提とします。1)言語は TypeScript です。がんばらないで始める のがおすすめです Redux

    React 本体のみで Redux フレンドリーな非同期処理を実現するアイデア | Recruit Tech Blog
    yug1224
    yug1224 2019/12/12
  • Renovate ではじめる依存関係更新の自動化

    記事は、リクルートライフスタイルアドベントカレンダー10日目の記事です。 リクルートテクノロジーズ兼リクルートライフスタイルのASGチームに所属している渡邉です。 最近は新規開発をやっていて、日々プロジェクトの package.json の更新に追われています。記事ではその更新タスクを大いに助けてくれた Renovate について紹介します。 Renovate とは Renovateプロジェクトの依存関係 (Dependency) の更新を自動化するツールです。似たようなツールとしては、Dependabot や Greenkeeper があります。プロダクションレベルのプロジェクトでは、明示している Dependency だけでも 20~30 程度あるのではないでしょうか。それらの Dependency は日々更新されており、最新版に追従していくだけでも時間と手間がかかります。Re

    Renovate ではじめる依存関係更新の自動化
    yug1224
    yug1224 2019/12/10
    オンプレミス版出たのは嬉しいよね