Chatwork Creator's Note

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

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

読者になる

【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:がんばれ、未来の私 😇

続きを読む

未来のChatworkについて(2020年版)

メリークリスマス♩id:cw-kasugaです。
この記事は、Chatwork Advent Calendar 2020 - Qiita の25日目の記事です。

Advent Calendarも最終日ですが、前回記事を書いたのが3年前だったことに驚愕してます。 今年からは対外的にもCTOという職責も任命頂いており、プロダクト周りの責任者として社外の人と積極的に交流したいと考えていたのですが・・・ コロナ禍という事もあり、自宅に引き篭もった一年でした(涙) その分、在宅環境が充実しました!在宅環境に関しては、弊社の制度絡めて別の機会に話してみたいと思います。

creators-note.chatwork.com

今回はChatwork社が前回の投稿からどんな施策をしてみたのか?今後どんな事にチャレンジしていこうとしているのか?それを実現する為にどんな組織になっていきたいか そんな理想に対して現状どんな課題があるのか?といった点について記事にしたいと思います。

  • tl;dr
  • 2017からの振り返り
    • リリース済み機能の継続的改善チームの結成
    • セキュリティチームの結成
    • DevHRチームの結成
    • 新卒採用(サマーインターンの開始)
  • Chatwork社の現状プロダクト課題
    • 継続的なUXの磨き込みが出来ていない
    • スケールしていく組織に紐づいたアーキテクチャへの転換
    • 強い実行力を支える生産指標の追求
  • 最後に
  • 余談

tl;dr

  • Chatwork社自体も、この3年で上場やらCTO交代と色々と動きがありました。
  • 2021年は、プロダクト成長スピードを加速させる為に、プロダクトマネジメント組織機能も包括する組織になります。
  • 専門性を高めてこれからのChatworkの更なるスケールを支える次世代アーキテクチャを構築したいエンジニアも、雑食で色々と触りながら、少数精鋭でスピーディーに今の本番環境を改善していきたいエンジニアも絶賛募集中!
続きを読む

Tools supporting kubernetes cluster in Chatwork (2020 version)

Hello, this is Sakamoto from the SRE Department. I run at least one full marathon every year, but unfortunately, I couldn't make it in 2020. I managed to run under 90 minutes (89 minutes) in the half-marathon held just in February, and I was aiming to run under 3 hours and 10 minutes this year but, unfortunately, there was nothing I could do.

I was not particularly interested in participating in track events as I did not run as part of my club activities, so I only had a goal of running a total distance for the year, and as of mid-December as I write this, my goal is 2591km. Last year's goal was 2724km, so I'm hoping to improve on that.

And without further ado, we've been using Kubernetes at Chatwork since 2016, at that time the EKS was not in existence, we were the early adopters of Kubernetes, so we used a tool named kube-aws to host and run Kubernetes on EC2, but we migrated to EKS this year.

aws.amazon.com

I'd like to introduce the tools that support Kubernetes for Chatwork (2020 version). The tools are not the command-based tools, such as kubectl and helm, but rather tools that run as applications in Kubernetes and support the application of services.

These tools are not included by default in EKS, some are included by default in GKE and AKE.

  • List of tools
  • Tools
    • dns-autoscaler(cluster-proportional-autoscaler)
    • node-local-dns
    • metrics-server
    • cluster-autoscaler
    • aws-alb-ingress-controller
    • aws-node-termination-handler
    • aws-ebs-csi-driver
    • node-problem-detector, draino
    • cert-manager
    • external-dns
    • reloader
    • datadog-agent
    • aws-secret-operator
    • kube-schedule-scaler
    • Flux、ArgoCD
  • Summary
続きを読む