Chatwork Creator's Note

ビジネスチャット「Chatwork」のエンジニアとデザイナーのブログです。

ビジネスチャット「Chatwork」のエンジニアとデザイナーのブログです。

読者になる

本当に怖い、Babelの更新

こんにちはー。突然ですが、聞いてくださいよー。

Babelのバージョンアップしたら「Chatworkのルーム切り替えが重くなった」と社内で言われてしまいました。 みんなの仕事の効率を悪くするわけにもいかないので、戻すしかありません。Babelの更新って、本当に怖いですよねー。

そんなわけで、こんにちは。フロントエンド開発部のひむら(id:eiel)です。

さて、この話自体は少し前のことなのですが、その際に原因を特定する余裕がなく、Babelの更新は後回しになっていました。 ルーム切り替え自体が歴史的経緯もあって、「とーっても」*1難易度が高くなっていて、最悪これを改善すれば更新できるだろうと期待もしてたりもしました。 ところが、うっかり再発させてしまったので、ここで気合をいれて改善することにしました。

今日はその話を記録しておきます。

*1:CV: 高橋李依のイメージで読んでください

続きを読む

ESLintの設定をスナップショットテストしてみました

初めまして。2020年11月にChatworkに入社したフロントエンド開発部のcw-sayamaです。

Chatworkのフロントエンド ではESLintを使いやすいように設定を変更して導入していますが、以下のように扱いにくい部分が出てきました。

  • 設定を変更した時に、どのルールを変えたのかが分かりにくい
  • ファイルによって設定を変えているが、それぞれの設定が確認しづらい
  • ESLint関連のモジュールが更新された時に設定が変更されていても検知しにくい

そこでこれらの問題を解決するべく、ESLintの設定をスナップショットテストする仕組みを作ったので、ここで紹介していこうと思います。

続きを読む

【GASで業務効率化】指定した日にChatworkへメッセージを投稿する

こんにちは、Chatworkのさかぐち(cw-sakaguchi)です。

「Google Apps Script」を利用して「業務効率化」する手順を不定期に更新しております。

Chatworkを利用する中でメッセージを「予約投稿」したいと思ったことはありませんか?

今回は「指定した日にChatworkへメッセージを投稿する仕組み」を作成しようと思います。

続きを読む

PHPのレジェンドシステムをEC2からKubernetesに移行する話 その5 〜PHPアプリケーションをコンテナ化しよう〜

こんにちは!SRE部のcw-ozakiです。

PHP Conference 2020 Re:bornでPHPでKubernetesを動かすにはどうするべきかという話をしてきました。 speakerdeck.com ただ、25分という短い枠でしたのでKubernetes初心者に向けてということで、だいぶ端折ったのでその5からはそのあたり補足もしていきたいと思います。

という訳で、今回はPHPアプリケーション用のコンテナイメージを作る話です!!

続きを読む

What we did to stabilize DNS on Kubernetes cluster

This time, I would like to talk about how I fixed DNS errors on EKS (Chatwork's EKS is operated using a single multi-tenant cluster)

  • Service becomes unstable when the number of pods exceeds a certain number
  • Culprit of conntrack overflow was kube-dns (CoreDNS)
  • Increasing the conntrack max value
  • autoscale kube-dns
  • Deploy node-local-dns too
  • DNS-related services started to become unstable again once node-local-dns was deployed
  • Points to use node-local-dns on EKS
  • Stabilized at last
続きを読む

EKSでDNSを安定させるために対応したこと

今回はEKSでDNSを安定させるために対応した話を書きたいと思います*1

  • 一定数のPod以上になるとサービスが不安定になる
  • conntrack溢れの犯人はkube-dns(CoreDNS)
  • conntrackのmaxを増やす
  • kube-dnsのautoscale
  • node-local-dnsも入れる
  • node-local-dnsを入れた途端にDNSまわりが再び不安定に
  • node-local-dnsの利用ポイント@EKS
  • 無事に安定

*1:ChatworkのEKS運用はシングルクラスタ・マルチテナントです

続きを読む

続・ウェブフロントエンドの設計力を高めるためにアプリケーションの構造を捉えてみる話 ~ 考察編 ~

みなさま、お疲れ様です!エンジニア採用広報の高瀬 (@Guvalif) です。

この記事は、Chatwork Advent Calendar 2020 における、24 日目の記事です。

先日、フロントエンド開発部に所属するアーキテクトの火村 (@eielh) が、 ウェブフロントエンドの設計力を高めるためにアプリケーションの構造を捉えてみる話 という記事を執筆しました。 それを受けて、同じくフロントエンド開発部に所属する私が、さらに掘り下げてみる社内公式マサカリ記事 🪓 を執筆してみた次第です 😋

ただし、例にもよって文量が多くなりそうなので、"考察編","実装編","理論編" の3部作*1に分けようかなと思っています。 というわけでさっそく 考察編 にゴー 🚀

  • I. 参考文献のご紹介 & まえがき
  • II. 状態遷移の抽象化 (StateM Monad)
  • III. 状態の保持 & 加工処理の抽象化 (Store Comonad)
  • IV. Monad と Comonad の双対性
  • V. EffectComponent のさらなる抽象化
  • VI. Update 関数の分解
  • VII. Component 全体の Store 化,およびその時間発展
  • VIII. まとめ

*1:がんばれ、未来の私 😇

続きを読む