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アプリケーション用のコンテナイメージを作る話です!!

続きを読む

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の更なるスケールを支える次世代アーキテクチャを構築したいエンジニアも、雑食で色々と触りながら、少数精鋭でスピーディーに今の本番環境を改善していきたいエンジニアも絶賛募集中!
続きを読む

ChatworkのKubernetesを支えるツールたち(2020年版)

こんにちは。SRE部坂本です。毎年最低1回はフルマラソンに出ていますが、2020年はあえなく参加できずに終わりました。 2月にギリギリ行われたハーフマラソンではなんとか90分切り(89分台)を達成し、今年は3時間10分以内を目指してただけに残念ですが、仕方ありません。

特に部活等で走っていたわけでもなく、トラックの大会に参加するのはやや抵抗があり、年間の走行距離ぐらいしか目標がなく、これを書いている12月中旬で2591kmとなっています。昨年が2724kmだったので、なんとか更新したいなーというのが今の気持ちです。

さて、Chatworkでは2016年からKubernetesを導入しております。EKSもない時代ですので、kube-awsというツールを利用してEC2にホスティングして運用していましたが、今年EKSに移行しました。

aws.amazon.com

そんなChatworkのKubernetesを支えるツールたち(2020年版)を紹介したいと思います。ツールは、kubectlやhelmといった、コマンドではなく、Kubernetesにアプリケーションとして動かし、サービスのアプリケーションを支えるツールたちです。

これらのツールはEKSではデフォルトで入らないもので、GKEやAKEだとデフォルトで入っているものも含みます。

  • ツールの一覧
  • ツールたち
    • 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
  • まとめ
  • 最後に
続きを読む

Rustでのモデル駆動設計について

こんにちはかとじゅんです。

この記事は、ドメイン駆動設計 Advent Calendar 2020の23日目の記事です1。DDDというよりRustの記事になってしまった…。

Rustの勉強を始めたのは2017年あたりと古いのですがなかなか身が入らず、本腰入れたのは今年の11月ぐらいでした(遅ッ。Scalaで実装してたライブラリをRustに書き換えたおかげでようやく開眼しました2

というわけで、今回は完全趣味の領域であるRustでドメインモデルをどう実装すればいいのかについて、僕の意見やアイデアなど雑にまとめてみたいと思います。まぁこれについてもいろんな観点がありますが、値オブジェクトやエンティティを実装するならという観点です。

※あ、Rustの所有権システムなどの言語仕様については細かく触れないので、各位適宜正しい情報源を参照してください。

f:id:j5ik2o:20201222164532p:plain


  1. RustのAdvent Calendarにもエントリしたかったが、遅かった

  2. NLLという借用チェッカーが使えるようになったのでだいぶコードが書きやすくなったようなので、タイミング的にちょうどよかったんじゃないかと思っています。

続きを読む