スライド
www.slideshare.net
価値
- 技術ってそれだけだったら意味が無い
- 日経にとっての価値は情報(記事)
情報を届ける
- 使いやすい
- 落ちない
- 早い/強い
内部的な価値
- 開発者が楽しい
- ごちゃごちゃしたコードは✕
- よる眠れる
- デバッグで一夜を過ごすとかは✕
技術が伸びる
- コミュニティをやる
言いたいことは言う
- 「ぶっちゃけこれクソですよね」とか言う
内製化
- 既存サービスの内製化
アーキテクチャ
SOAの現状
- 4つの内部サービス
- 3つの連携サーバ
- 2つのフロントサーバ
APIゲートウェイ
AWS
- 新しく置き換えていっているものから順に
- ElasticBeanstalk
- VPC・内部ELBでちゃんと守る
- ネットワーク構成に強い人が日経にいるので一緒にやった
開発
Python
- 日経内部にはPythonな人々がいた
- 開発しやすい
- 人によって書き方が違うことがあまりない
- BePROUDの豊富な実績
Python3
- Python3のメリット
- 頻繁に聞かれる
- 日本語問題の少なさ
- 5年後も使える
ライブラリの問題は?
- Python3で問題なし
- 8ヶ月で軽微なものが2,3件
- 別にいらないよね
- 対応してもらった
- Ansibleなどのローカルの問題はあった
- 8ヶ月で軽微なものが2,3件
フレームワークはDjango1.8
- jangoベースのライブラリがかなりある
- LongTermSupport(3年間)
プロジェクトテンプレート機能
- まだjangoに詳しくない、ベストプラクティスを知らない人も始められる
- テストランナーの設定
- Dockerfileなどの初期設定も詰め込んである
DjangoRestFramework
swagger
運用
Dockerを採用
- 仕事で使っている人…会場ではまだ2人だけ
- プロダクトで使うとちょっと…
- ログの出力場所は?
- AnsibleでDockerを載せるサーバ構成を作る
- コンテナでGracefulアップデート
ElasticBeanstalk
- AWSが提供するPaaS
- 1インスタンス複数Dockerコンテナ
- インスタンス毎のオートスケール可能
- CI連携で開発にデプロイ
- ElasticBeanstalkはEC2コンテナサービスを内部で使っている
Dockerはログを残すのが大変→fluentで解決
Rundeck
- バッチ管理サーバ
- すごいcron
- 今まではsystemWorkerを使っていた
- 最近実行したジョブの一覧とかも取れる
- 中で実行したコンソールも表示できる
- Jobが失敗した場合にSlackに通知したりもしてる
Sentry
- アプリケーションログを集約するサーバ
- 管理・周知してくれる
- エラー発生→初回のみ通知
- 秒間500回叩かれたりしても、初回のみ
- エラーを確認済みにすると、再度通知
- noteも残せる
- Githubと連携して、エラーを元にissueが作れる
- エラーが来るnote作成→GitHub issue作成→対応する→確認完了
- アプリケーションエラーのトレースバックが取れる
- 発生時の変数が全て見れる
NewRelic
- アクセス時間の解析ができる
スキルの習得
- スキルを盗んでもらう
- 納得して知ってもらう
- スキルを一緒に取得する
- 「教える」ではない
- 信頼関係を築くのが大事
- まだ信頼関係がない状態でマサカリを投げるのは良くない
ペアプロ(作業)
- まだ慣れてない人と作業
- 一緒にやって一緒に教える
- モジュール設計で悩ましいときにペアプロ
レビュー
- PullReqが来たら積極的に見ていく
- 重要な実装上の問題から
- 最初から沢山投げると気が滅入る
- 沢山書くと覚えられない
- 設計上のアドバイスはその次
- 書き方などの軽微なコメントは無視しても良い
- どうしても言いたければ、それを前置きする
- そういう問題は静的解析で見つける
Wiki
技術の伝え方まとめ
- 信頼関係を大事にする
- 情報の重要度も伝える
- 情報は繰り返し使う
質問
Q. スキルの習得「教えるよりも一緒に学ぶ」とは、日経さんはどれぐらいのスピードで覚えていったのか?覚える過程など
- 8ヶ月で、最初の2人のメンバーは技術を探していくフェーズ
- 新入社員やアルバイトは一緒にやりながら開発していく
- 半年では、まだきれいな設計・きれいなコードはできない
- 他の人に支えられながら、一つのサービスを任せる程度
Q. ペアプロをやっている時の自分の作業との配分は?
- 開発作業1/3、調査1/3、伝える作業が1/3ぐらい
Q. 入れようと思って止めたものは?
- ECS
- コンテナのスケールができなかったから
- ファンクロード
- 分散して負荷ができなかったから
- ro-kasutoIOを使っている