技術関連の覚書

案件でやったり自宅で試したことの覚書

DevOpsとElasticsearch勉強会の振り返り

2日連チャンの勉強会でしたが、この2つの共通点はユーザの視点でのIT活用という、ITが既に技術者だけのものではないということを感じさせる勉強会でした。

今後の展望について思うこと

従来のビジネスモデルではシステム開発と言うのは、要件が発生してから受託して仕様を顧客と詰めて(要件定義、設計、レビュー)製造(コーディング、環境作り、テスト)、受入(顧客テスト、納品)が終わった後に運用保守(トラブル対応、システム改修、ログ分析)が技術者の仕事になってました。

運用保守はシステムが動いている間続くためこちらの方を収入源としていたところが多いので、DevOpsのように開発だけやって運用保守を顧客に渡してしまう事を嫌う企業も少なくないです。

ただ、市場のニーズの変化はどんどん速くなっているのでログ分析などを外に頼んでそれをレポートにまとめてもらい(ログを収集した結果をExcelに落としてグラフ化したものが多い)それを持っていって上司に報告すると言うのは時間のロスと考えられてしまうのでしょう。

ベンダー企業のレポートも意図したものと一致しているとも限らないため、何度か再提出もよくある話です。

それならば、使いやすいツールがあればあとは自前で分析した方が速いとなればそちらを使うようになります。

運用保守にこだわる理由

開発と言うのは、実際に出来上がるまでわからないリスクの多いフェーズです。 赤字になる事も多々あり、この時点の赤字を運用保守で補うということが今までのやり方でしたし、今もそれで続けているところは多いです。

システムも一度動き始めれば5年、10年、中には40年(大型のシステムはそのくらい動いています)と使うので長期に渡り安定した収入があります。

トラブルがあれば契約によりますが、その対応で収入になる事もあります。

また、この点が最大の問題点でもあるのですが、10年動くシステムであれば、10年間新しい技術を覚える必要がないと考えるところもあります。 10年前がどのような時代かというと、

  • iPhoneが登場(今年が10周年)

  • JDKのバージョンが6(2006年リリース)

  • Git(初版リリース2005年)よりもSubversionが多かった、MS VisualSourceSafe(2012年サポート終了)もまだサポート内のため使われていた

  • Redmine初版が出たばかり(2006年)

  • クラウドコンピューティングという言葉が登場(2006年)

  • AWSでEC2サービスが開始されたばかり(2006年)

この時代で止まってしまうのもちょっと恐ろしい話です。

時代の変化

私の知り合いで、10年以上大規模案件に携わってきて抜けてきた方がいました。

20年以上前に作られたCOBOLのシステムのようですが、今COBOLでの新規案件は激減してCOBOLからの移行が主なプロジェクトになっているため、汎用機を使うような大型案件でもCOBOLJavaを知ってる人に対する需要が増えてCOBOLだけではなかなか仕事につけないと言っていました。 10年前でもCOBOLはそろそろ無くなるのではと言われてた一方で、まだまだ使われると言う意見もありましたが、当時はまだCOBOLは年寄り案件と言われるくらい古くからのシステム開発に携わってきたベテランエンジニアの案件で金額もよく、長期間の案件で定年までこれでやっていけるという思いで就業する人が多かったようです。*1

ちなみに、私はこの歳でCOBOL未経験者です。

ただ、COBOLが悪いとか、Javaがいいとか(Javaももう20年と言う古い言語になりつつありますけど)と言うわけでなく、需要に対していつでも応じられる体制は必要かと思います。

Javaだっていつ無くなるかわからないし、そもそもプログラミングと言うものが必要ない時代も来ないとも限りません。

しかし、どんな時代でも技術の最先端というものは技術者が作り、技術者が発展させて広めていくものなのでどんな時代になっても対応できる姿勢が大切だと感じました。

*1:5/5追記:こんな会社を見つけました。 COBOL会社概要 古いだけの言語でなく、特定業界でも需要があればオンリーワン企業としてやって行けそうです

第19回Elasaticsearch勉強会に行ってきました

第19回Elasticsearch勉強会­ #elasticsearchjp - Elasticsearch勉強会(Elastic Tokyo User Group) #elasticsearchjp (東京都) | Meetup

今回はカリフォルニアでElastic{ON}開催れたのでその紹介と、そこに行ってきたお二方のTLでした。

こちらでビデオも見られます

Elastic{ON} User Conference & Road Tour | Elastic

What is the Elastic{ON}?

Elastic{ON} Sanfranciscoでやったカンファレンス

スピーカーはオーガナイザでもあるJun Otaniさん、今日は喉を痛めながら1時間に渡る長い講演となりました。 お疲れ様です。

大まかに言うとこんなことを紹介 * 写真をいくつか紹介 * 2100人くらい来た * 普段は暖かいけど今回は曇ってて肌寒かった

  • IBM、indexの中身を暗号化する製品を作ってる

  • ASK ME ANYTHING ここにElasticsearch社員がいていろんな質問に答えてくれる

  • Elasticsearchの年表 Kibana、Elasticsearch、Logstash どこらへんでどのユーザグループが立ち上がったか どのバージョンから触り始めたかをシールで貼ってもらって可視化

  • アーケードゲームがおいてあって遊べるコーナーも

  • ご飯が美味しかった

  • Cause Awards ケースを紹介 犯罪に立ち向かうなど

e-cap keynote

  • ビデオ ようつべにある? keynoteの会場 後ろの画面にKibana

バレリーナが踊り続け、センサからデータを拾って手の動きや心拍をKIBANAで可視化

Community 85k members

100M Downloads 2016年

  • Since5.0 (今は5.3.1) 5からすべてのバージョンを揃える X-Pack,Logstash Elasticsearch kibana,beat

5から増えた機能

Numb3rs データ構造を小さくして効率を上げる 地図系の圧縮率が良くなって効率化 数字はポイント→レンジに Range型で保存、クエリも投げられる 数値が1つでなく、範囲で登録ということです

  • Elastic Tile Service 有償化されて認証がかかって地図が出なくなったためElasticからサービス提供

X-Pack ライセンスを取れば無償版もあるので、それから見ることができる

  • Heartbeart 死活監視 ElasticCloudを作るときに使っていた

  • Coming H1 2017 simple things should be simple

  • To tail a file

goで作られたツール WebServerをtailしてlogstashに投げる

Filebeat Modules もう出ているのでダウンロードして使える

  • デモ

Kibana Githubにあるでもログを読みこませる

filebeat.ymlに書いて filebeat実行

KIBANAで見れる ダッシュボードはテンプレートで提供 filebeat,Elasticsearch,KIBANAだけで動く

Elasticsearchに投げてパース

  • To Visualize

Time Series Visual Builder 5.4から

メーター、グラフ、最大最小の数値

上限下限、線グラフを設定 棒グラフ+線グラフ → 線を入れてノート出力

  • To train a model 5.4から

機械学習

異常値検知

データの波形をもとに学習 波形の以上を検知する

もともと入ってるデータに対して学習 薄いブルーが学習モデル 濃いブルーが実データ

学習モデルの幅が実データに近づく 学習モデルから外れた時が異常

オンラインのビデオがある

  • X-Packの有償版

Tryalは30日無料

  • Machine Learning 5.4から

To build

ElasticCloud Enterprise

AWSで提供しているElasticCloudをいろんなところで使える

Elasticsearch SQL クエリーをSQLで書ける SQLをクエリに変換して投げる仕組み

方言のサポートはしない トランザクション管理はしない

フィールドごとに重み付け→MATCH関数で書ける

JDBC,ODBCの提供は先の話

最初はSELECTだけ対応という話も

  • Kibana Canbas

インフォグラフィックス KIBANAのデータをリアルタイムに表示する(開発中)

グラフと一緒に絵が書ける レポート

  • Closing keynote ここでビデオ、スライドが見れる

Wallmart POSデータ→バッチ これをリアルタイムに取れるようにして楽に見る仕組み

kafka→kibana

Ciscoコマースサイト 数十billion

大学の論文 似たようなもの、盗作を探す

Elasticsearch6からどうなる? もうじきメジャーバージョンの話が出てるんですね Lucene7 Sequence Number Rolling Updgrades Chross-major version search

Kibana: New since 5.0

日本語メニューが出るはず*1

Beats

ElasticsearchのモニタリングにBeatを使う メトリックも

logstash パーシエントキュー ファイルに落として突然落ちてもデータが欠落しない

Elasticstack

設定ファイルのビジュアライズ

pipelines Visual Builder

ステータスコードを絵文字

アプロクエスト Elastic{ON} 日本語でブログを書いてある

5.4は何時頃出る? もうすぐ

GW中にブログを見たほうがいい(ということは…) DISCUSで聞いてみると何時頃かは聞けるかも

Beta Available Now I GA Spring 2017

interesting sessions????

LT

  • Elastic{ON} オープンな世界へようこそ

Future Architect Inc

前原応光(まえはらまさみつ)さん

もうすぐ GW

お出かけする? 意外に少ない(会場で手の挙がった数です)

天気が気になる

過去30年間のデータから天気を予測する ….とかではない

Elasitc{ON}

本日は個人的な感想&意見

いろんなスポンサー企業(のロゴ)

あれ?気になりません?

競合じゃね?

壁なんてない

elastic prelert

みたいなことが起こる

会社だけでなくて

どこでもディスカッション

活発なディスカッションが送れる

パーティ 開演終焉の挨拶なんてなくてあるのはエンジニアの交流のみ そこでもディスカッション

会社、人の壁を作らない みんな一体感があって面白い

おまけ

tinder(出合い系っぽいもの) やってみた 男性とマッチング

と言うオチで締めてくれました

楽しいセッションでElastic{ON}の熱気が伝わってきました

Acroquest Technology

白井智子(さとこ)さん

3日でブログ35本UPした会社です

営業という観点から顧客ウケしそうな心機能ベスト3の紹介

3位

Pipeline Visualizer

クエリを書くのは大変だけどこれを使えば自分で簡単に設定できそう

データ投入してみたけどエラーが出たり時間がかかるが何が問題かわからなかった

2位

kibana Canvas

プレゼン中のデータが勝手に更新されるのは画期的 経営層へのレポートを見栄え良くできそう

分析的なグラフや表だけじゃなく、見栄えある表現ができる

1位

X-Pack Machine Learning

これまで毎日グラフを人の目dめ見て変な挙動がないかを自動化できそう

事前に機会をトレーニングしたり正解データを準備したりしないでログを投入するだけで使えるのは魅力的

アラーム通知と連動に期待

いつ出るの?

多くの新機能が発表になり周りの顧客の期待も高まってます。

営業視点でのElastic{ON}レポートでユーザ企業でのニーズもわかりやすく説明していただけました

その他

Elastic{ON}に行くと大谷さんが着てたTシャツがもらえる その場でプリントして絵柄が選べるそうです*2

その後は例によって懇親会です

*1:英語、ロシア語、フランス語、中国語

*2:残念ながら写真はありません

GitHubとクラスメソッドの勉強会〜GitHub x AWSの最新DevOps事情〜 に行ってきました

こちらの勉強会に行ってきました。

classmethod.connpass.com

GitHubですが、私自身は個人利用しかしたことがなくビジネスでの活用には興味ありました。GitHub社の開発方法や、クラスメソッド社が実践しているGitHubAWSとの連携、GitHubEnterpriseのデザインパターンの紹介など興味深い話ばかりでした。

今回のテーマはDevOpsということですが、DevOpsというのは、一言で言うと 従来の製造から保守までを業者に任せるのではなく、作ってもらったものを自前で管理して使うと言うものです。 パソコンが普及して20年以上たった今、パソコンを使う業務というのは当たり前のことになり、サーバもクラウドサービスを活用することで、安全で便利な運用をできるようになってきました。 今後はより高い価値を提供していける企業が残っていく時代になっていくんだなと思える勉強会でした。

セッションの内容は資料が上がっているので、ここではダイジェスト版で

How we ship GitHub

  • DevOpsとは DevOpsとは何なのか、なぜ今DevOpsなのかといった事に触れていました。 「DevOpsとは無駄なく遅滞なく価値を届ける」であると言ってした。

  • アジャイルとは、 Scope、Resource、Timeの三角形であるが、それが今は逆になっているのではないか 従来のScopeが決まっていて、Resouce、Timeを割り当てると言った手法からTime、ResourceがあってScopeを作っていくということですが、市場の変化に対応するとこうなるということでした。

  • GitHubの開発管理 前提:Masterは随時デプロイ可能な状態を保つということで

  • Masterからフィーチャーブランチを作成してコーディングをしていく
  • できるだけ短い期間でのコミット
  • コミットしたものを他の開発者たちと議論しながら開発を進め
  • 動作保証がされたものを最終的にMasterにマージ

コミット時に議論をするときに使ってるのがhubotでCIの役割もしているそうですが、お遊びコマンドもいくつか紹介していました。*1

DevOpsとAWS

  • DevOpsとは 「安全に、早くリリースする仕組み」 そのために、 属人性の排除 デリバリの自動化 コードで整理する

  • 開発の効率化

  • 安全なリリース デプロイの自動化、フローを自動化して安全を確保

  • CI/CD バグを早期発見する手法でこれも自動化する仕組み

  • AWSサービス CodeXXXを使う コード管理、ビルド、デプロイをAWSのサービスで行ってます。 それぞれCodeCommit、CodeBuild、CodeDeployを利用 注意すべきは「デプロイとプロビジョニングは混ぜるな」だそうです。

GitHub EnterpriseとAWSを組み合わせたCDP

  • Managed Serviceを使う 安定性 他サービス連携 運用負荷軽減

要件に合わない時に自分たちで作る

  • GHEの設定はいじらない データとユーザ以外は最新版で上書きされるため

  • GHEをインターネットに繋ぎたくない セキュリティ面、社内LDAPを使いたい場合 →プライベートネットワークパターン

  • GHEのバックアップをしたい 不要なインスタンスは管理したくない →ManagedBackupパターン

他、いろいろなデザインパターンを紹介していただきました。

DevOpsと言ってもお客さんに提供する形は様々でそれに合わせたサービスを提供していくこと 世の中の変化に対して素早く対応していくことが今後は必要ですね

*1:写真撮影可能だったのですが、撮影してこなかったのが残念

ラムダ式

Javaでは8から追加されたラムダ式ですが、こんな感じに書けば実装できる。

( 実装するメソッドの引数 ) -> { 処理 }

これのどこが良くなったかというと、インタフェースで作った抽象クラスを実装するという処理を1行で書けると言う点になる。

ちゃんと書くと関数型インタフェースの実装ということで、1つのメソッドを持ったインタフェースの実装

関数型インタフェース

@FunctionalInterface // このアノテーションが関数型インタフェース
public interface LambdaIF {
    public abstract int add(int x);
}

これの呼び出しが

LambdaIF y = x -> x + 1;

のように書ける。

一番省略した形になってますが、Java8が出てもう2年経ってるので正式な書き方はあちこちに載ってます(手抜きだなあ…)

もうすぐJava9も出ますね。

DBのインデックス

以前書いたSQLの最適化について( http://blog.hatena.ne.jp/boctok-ctpoba/boctoc1969.hatenablog.com/edit?entry=10328749687232910758 )ですが、「インデックスで検索速くなるなら全部につけちゃえばいいんじゃない?」と言う人がいたので補足します。

インデックスというのは、データの索引(Aで始まるとか)に分類してそれがどこにあるのかを示したデータです。

だから、これを作るときに負荷がかかります。

つまり、INSERT、UPDATE、DELETEの時はインデックスを作り直すためその分時間がかかります。

やたらとインデックスを貼れない理由はそこです。

それから、インデックスを貼る場合に効果があるかどうか検証した方が良いものもあります。

  • データの内容がほとんど変わらないもの

99%が同じデータで残りの1%に対する検索を殆どしない場合検索範囲は99%なので、あまり効果はありません。

  • データの種類が少ないもの

フラグのように2値だと検索量は良くて半分です。検索範囲が半分になる事で効果がある場合や、偏りがあって小さい側の検索が多い場合は有効かもしれません。

上記のような状態をカーディナリティが低いと言うそうです。

Google翻訳ではこの様に出てきました

cardinality the number of elements in a set or other grouping, as a property of that grouping. Cantor conjectured that there are no infinite cardinalities between the size of the natural numbers and the size of the real numbers (and so there are no sets S as described above).

オンラインでの開発環境

最近クラウドとかオンラインでできることが増えてますがオンラインでできる開発環境の紹介です。

開発環境

Web-based online coding environment | paiza.IO

Githubと同期や共同編集などもできるようです。

CI

Wercker Home

GithubやBitBucketとも連動してます。

バージョン管理

The world's leading software development platform · GitHub

公開リポジトリは無料で使えます。

Bitbucket | The Git solution for professional teams

Githubと同じような感じですが、プライベートリポジトリも無料で使えます。

こういう環境を使って無料で開発もできる時代になったんですね。

Ubuntu17.04新機能

ようやくインストールできたので動かしてみます。

まずは、VMのLiveCDの割り当てを外します。

f:id:boctok-ctpoba:20170423170701p:plain

ログインします。

f:id:boctok-ctpoba:20170423193924p:plain

デフォルトのスクリーンサイズ(800x600)なので狭いです。

f:id:boctok-ctpoba:20170423194043p:plain

設定を変更して広くします。

システム設定を開いて、 f:id:boctok-ctpoba:20170423194343p:plain

ディスプレイの設定で画面解像度を変更します。

f:id:boctok-ctpoba:20170423194830p:plain

今回の変更は、リリースノート ZestyZapus/ReleaseNotes - Ubuntu Wiki によると、

  • 32bitPPCサポートの終了

  • デフォルトDNSの名前解決がsystemd-resolved

  • 新規インストールした場合、従来のSWAPパーティションからSWAPファイルへ変更

  • カーネルバージョンが4.10

  • ドライバレスプリント

  • LibreOffice5.3

など

まず、カーネルバージョンとSWAPファイルの変更を見てみます。

f:id:boctok-ctpoba:20170423201919p:plain

この時点でtopコマンドでメモリの使用状況などを見てみます。

f:id:boctok-ctpoba:20170423202351p:plain

既にSWAPが47MBほど使われています。 確かに、ちょっと重たいかなと言う感じはあります。

LibreOffice Calcを立ち上げてみました。 SWAPが70MBくらいまで増えました。

f:id:boctok-ctpoba:20170423202832p:plain

1GBで使うには THE BEATNIKS/ちょっとツラインダ - YouTube といった感想です。

SSDを使えばもしかしたら気にならないかもしれませんが。

2GBにしてみました。 SWAPは無くなりました。

f:id:boctok-ctpoba:20170423203922p:plain

ネットワークインタフェースの設定を見るためにifconfigをたたいてみます。

f:id:boctok-ctpoba:20170423204506p:plain

net-toolsをインストールしろといってますが、Ubuntu17.04ではnet-toolsが非推奨になっています。 CentOS7を使ってる人は察しがつくと思いますが、ip addrコマンドを使ってみます。

f:id:boctok-ctpoba:20170423204855p:plain

変更されたコマンドについてはこちらを見てください(英語)。 networking:net-tools [Linux Foundation Wiki]

ドライバレスプリントはどうも自宅プリンタは IPP Everywhere Self-Certified Printers - Printer Working Group の対象になってないようで試すことはできませんでした。

最後に

Ubuntuデスクトップはメモリ1GBではちょっと重いけども2GBあれば何とか使えそうです。 自宅ノートは1GBの2coreなので、しばらくXubuntu16.10かな。

ドライバレスプリントはリストを見るとHPのプリンタに対応しているようです。

サーバの方は

となってます。(読んだだけです)

OpenStackは自分が触ってた頃からいくつか増えてるようです。 Aodh and Gnochi Trove Designate Ironic Manila Barbican(昔こんな名前のノンアルビールがあった気がする)

Ubuntu MATE 17.04 | Ubuntu MATE もリリースされているようなので、次はこれですね。