スキップしてメイン コンテンツに移動

[giip] 一緒にgiip RPA(サーバー運用自動化ツール)を作りませんか?

giipの日本語バージョンを新しいgitに移しました!

giipを活用したスクリプトの共有などにお使い頂ければと思います。

サービスページ : http://giipweb.littleworld.net (フロントは英語だけどログインすると日本語対応しています。そしてフロントは誰でも自分なりのフロントが作れるのでご連絡ください)

英語版 : https://github.com/LowyShin/giip (giip関連scriptもあります!)

文書(Wiki) : https://github.com/LowyShin/giip-ja/wiki

# 概要

世の中の全てのデバイス(サーバーとパソコン及びモバイル・IoTデバイスまで)の完全自動運用には何が必要でしょうか。

今までのDevOpsシステムは元々開発者が設計して作ったので開発者の観点でしか見れなかったです。
なので広大なシステムの設計には手動でしかできないと言っちゃうところがありました。
ここでSystem Architecture(システムアーキテクチャ)が設計したシステムならどうすべきなのかを考えました。

SFI(SONY Finance International)の金融システム運用経験とNexonの大規模オンラインゲームの運用及びハッカとの戦い、そしてLOL(League Of Legends、Riot Games社)の300Gbpsが超える莫大なトラフィックを運用した経験その他様々な規模の300サービス以上を運用した経験を活かしてシステム運用アーキテクチャを2007年作りました。

これが今までもメインに使っているgiip RPA(Robotics Process Automation)エンジンです。

10年以上を作り続けているgiipエンジンには次の哲学が含まれています。

## KVS(Key Value Store)
全てのシステムのデータを収集するために非整形データタイプのJSONをデータベースのように使う為にKVS(Key Value Store)の概念を導入しました。

## MSA(Micro Service Architecture)
全ての機能は追加・削除が可能にする為全ての機能を独立して作り上げてます。
一つの機能だけ取って新しいサービスを作るのができます。

## MVC(Model View Controller)
私流のMVCを導入しそれぞれのフレイムワークが異なるように構成してます。
ViewはBootstrapを使っていつでもディレクトリ毎変えちゃえば全然新しいサービスにもできちゃいます。
ModelとControllerの分離もきちんとしていて異なるタイプのDBMSとかNoSQLを利用したり、フィールド名が異なってもサービスに影響が無いように設計されています。

## Scale out & Redundancy(拡張と冗長)
ソースを纏めて管理していますが、機能の活性によって用途がいつでも変えられる仕組みになっています。
もしClientが増えてAPIに負荷が集中するとクラウドサーバーを追加してソースをコピーしてAPIサーバーとして指定するだけでAPIサーバーになってGLBに連動するとそのままに使えます。さらに増えたAPIサーバのうち2台をコントローラーにしようとするとコントローラー用GLBに登録するだけで負荷が減ったサーバーは勝手にコントローラーサーバー機能が追加されます。

## GLB(Global Load Balancer)
世界何処にサーバーがあっても負荷分散と冗長構成ができます。例えば、日本に1セットのサーバがあってまたドイツに1セットのサーバをGLBに繋いでたら自動で負荷分散と冗長になってどちらが死んでしまってもサービスは継続できます。

## RPA(Robotics Process Automation)
giipエンジンの設計が始まった2007年には既にHITACHIさんのジョブネット(JobNet)とJP1、千手など様々な運用自動化サポートツールがあり、BMCのControl-Mもありました。今更RPAを言うのはこの自動化ツールが知らない人には革新的ですが我々には今までと変わりません。
giipのRPAのフロントはAutohotkeyまたはSelenium、Jmeterを利用してマウスの動きから画面の認識など様々なツールでユーザーのアクションと認識を行なっています。
giipはただこのジョブをQueueに乗せていつどの条件でどのクライアントがやっちゃえばいいかを判断して命令を下すのです。

https://github.com/LowyShin/giip/blob/gh-pages/images/PP/giip-PP-Intro-AISE02.png

## CQE(Command Queue Engine)
CQEはクライアントが行う作業などを定義し、条件によって実行などを行うことを管理するエンジンです。特定サーバーの異常をモバイルデバイスが気付いた時、どのノートパソコンに命令をしてサーバーの遠隔操作を行うことを決めるとか、定期バックアップをローカルにして終わったらどのネットワークのサーバーに流して、最後はどのメディアにバックアップするかを決めたり今まで作業者としてやっていたことを全てコントロールするコントロールタワーと言えるgiipオリジナルエンジンです。

## MQE(Message Queue Engine)
MQTTの短所を解決するために作ったgiipならではのメッセージエンジンでJSON方式でやりとりしています。いくら多くのやりとりでもFIFOを守り、RDBMSがキャッシュの役割をして素早くシステムの状況などのメッセージをネットワーク上に流します。それを許可を得たクライアントが情報を拾って判断またはレポートを送ったりすることができます。基本KVSを利用するのでグラフ、統計などが作りやすくなり、JSON自体は統計が取りにくいのでKeyを選択するだけで定期的にデータを抽出して整形データに作ってレポートに使えるようにしています。
Morris.js, jqplotなどJSONをサポートしている様々なグラフツールとデータを連動できるのでViewを作成する時時間の短縮ができ、専用のDashboardが作れます。

## Opensource
MSA構造で作られているのでOpenstackなりKubernetesなりNode.js、Bootstrap、ELK(Elastic Logstash Kibana)、EFK(Elastic Fluentbit Kibana)など様々なオープンソースとの連携が可能で、オープンソースを利用した場合giipの重複する機能はそのまま飛ばせます。
なので使いたいオープンソースを自由に利用して構築することができます。

https://www.slideshare.net/LowyShin/giip-engine-open-source-revolution

## MarketPlace
様々なシステム運用のコツをスクリプトにするとそのまま販売できます。例えば簡単なバックアップスクリプトが1回1円だとしたら1日1回バックアップしても1ヶ月約30円になります。なので勝手に使った方がもっと楽になるのです。そしてMongoDB・Hadoopなどのインストールが複雑なツールのインストールもマーケットプレースからインストールしちゃえば楽にできちゃいます。知識として持っていた方がいいのと要らないので安く頼むことさえきちんと管理できればマーケットプレースは無限の時間節約になれます。
今まではエンジニアの知識は作業しない限りお金になりませんでしたが、これからはどんどんあげるだけで収入ができる環境になれました!

http://giipweb.littleworld.net/view/SMAHTML/MPScriptList.asp

## MLE(Machine Learning Engine)
まだ機械学習機能はCQEとMQEを混ぜて使ってますが、GPUリソースの提供者とのシェアを考えてMarketplaceにアップしようとしています。勿論MSA構造でできるように十分時間をかけて設計をし直していますが、今にも生命保険会社などのMLを情報漏れなくできるようにやっています。
MLFunctionをスクリプトに作成するチームとGPUを提供するリソース提供者、そしてデータを持っている顧客が結ぶことができるのがgiipなのです。この経験を活かしてもっと多いData Scientists(データサイエンティスツ、データ科学者)とGPUファームの連携、そしてデータを持っている顧客を結び付けることを図っています。

# giipは誰が使うべき?

AWS(Amazon Web Service)を利用している顧客がいます。giip Agentを入れて顧客はAWSのVMと自社のBaremetal(物理サーバー、Local IP)を一画面で管理していました。急にCSの連絡がきて「間違えてAWS VMのiptableに自分のIPを入れずに適用してしまいました。」と。この場合AWSのCSには新しくVMを作成するしかないと言います。OS自体が全てのSSH接続をブロックしているからです。giipで遠隔コマンドでservice iptables stop (CentOS7では systemctl stop firewalld)を流しました。そうしたら接続できるようになりました。

このようにクラウドサービス業者さんからもらった基本ツールだけではいつでも不安になります。そして自分のパソコンとか社内サーバーなどのLocal IPになっているサーバー、そしてコロコロIPが変わってしまうサーバーなどがgiipでしかまとめて管理できない対象になります。もちろんどのサーバーとIPを持っているデバイスも管理できますが、この機能は数多くのサービスの涙がある経験を持ってないと作れない機能です。(笑)

そして今までのCSB(Cloud Service Brokerage)またはCMP(Cloud Management Platform)などはあくまでもPublic Cloud業者のAPIを利用して一つにまとまっただけです。本当にシステムを運用して苦労した経験の上作ったツールではないので何を使っても物足りない気持ちを感じます。

giipこそ使った人々はやめられなくなる魅力があるのです。
そして自分専用のツールにカスタマイズができ、自分だけのサービスとしても使えます。
AjaxとjqueryでJSONコントロールさえできれば自分のパソコンにHTMLだけでgiip管理ツールができちゃうんです。

この魅力を十分味ってみるのはいかがでしょうか?

# 共同開発者募集

一緒に作って行く個人と企業様を募集しています!
個人でもご連絡頂ければ開発環境の提供とエンジンのソースコードの公開をさせていただきます。

自分一人で今までやってきたシステム運用ノウハウをgiipに登録して顧客を運用するとそれは無料なんです。
さらに、顧客を運用しながら作ったスクリプトはそのままMarketplaceにアップでき、他のユーザーが使ったらそのまま追加の収入になるのです。
まだ、一人でやってますか?
みんなで力を合わせれば全世界で貴方の経験が活かせます!

ご意見はいつでも

https://github.com/LowyShin/giip/wiki/Contact-Us

までに!

コメント

このブログの人気の投稿

コピペができないときチェックすべきこと! :: よく迷うUiPathのコツ

UiPath( https://uipath.com )はMicrosoft社のWWFを改良した製品なのでVisual Studioより初心者向けに使いやすくなっている。 しかし、初心者がそのまま使うにはかなりのハドルがある。 理由は基本開発者向けの開発ツールを無理やり便利に作ってみたとしても開発の概念と考え方がないと結構躓くことが多い。 そのなかで私もよく迷ったりしていることの一つを整理しとく。 基本Activityはすぐコピぺができるので多数のUiPath Studioを開いて開発してたりする。 ここでコピペをしても反応ないときがよくある。 この場合はこれをチェックすること! 1.Sequenceがなく一つのActivityしかないところにはペーストできないのが多い。 例えば、ifの処理ボックスにはSequenceが最初はない。 そのボックスに一つのActivityはペーストできるのに2個目からはなぜか反応ない。 それで分からないまま新しいActivityを追加してたりしたが、 あそこにSequenceを入れたら解決ができるのだ! 2.正常にペーストできるはずのところに反応ない。 この場合はPackageが合わなくペーストが効かないケースが多い。 DESIGN>Manage Packagesをクリックしてコピー元のパッケージにインストールされているのにコピー先にインストールされてないパッケージを探す! パッケージを一々見るのが難しい!と思ったら メモ帳からファイルがあるフォルダにあるproject.jsonファイルを開いてみる! あそこにJSONの形式でインストールされたパッケージが見えるので比較しやすくなる! ちなみにコピペをすると変数の宣言が大変だと思うが、 そこでもコツがあるのだ! 変数の宣言はなるべく細かくしてSequence単位で管理できるようにする。 全てに影響がある変数はしょうがないから一番広く宣言するけど。 初心者向けの説明だと、 Variablesというところをクリックして変数を開いたらScopeという範囲が見える! 大体Sequenceボックスの名前を変えてないのでSequenceがすらりと表示されてるはずが、Sequenceボックスの名前を付けてたら見やすくなる。 あ

英語をより楽に勉強できる方法

英語ができなくて良い機会が失われた経験があるでしょう。 GoogleさんもMicrosoftさんも英語で面接をしてます。 私がエンジニアですが技術より言語の学びが優先だと思います。 知り合いの中で技術は低いが英語が上手い人が私より良い道を歩いてます。 それは会話ができなければ技術も通じないとのことでしょう。 それで色々お試ししましたところ 情報を公開しようとしてます! まず、 Khan Academy( https://www.khanacademy.org/ )に入会! これはSalman Khanという人が自分の親戚に数学を教えるために試したやり方が色んな人が参加してグーグルさんとマイクロソフトさんが投資をした 完全無料教育サービス です。 しかし、これは英語でしか話してないので初心者の方には無理があるでしょう。 それでも、この記事をお読みになられた方は基本的な文法は学んだ方だと考えときます。 そして TEDアプリ( https://www.ted.com/ ) をダウンロード。 日本語の字幕がある映像の中で自分の好みの映像を選んでください。 有名なスピーカが話したことが多いので話し方など良い勉強になります。 次は MeetUp( https://www.meetup.com/ja-JP/ ) でしょ。 英会話グループを探して加入。 自分のレベルに合わせて参加してら良い友達もできるし勉強にもなります。 電車で単語ばっかり暗記している方が見つかりますが、 それも悪くは無いけど効率はどうかと思います。 やはり勉強は楽しく!自分の好みでは無いと! 映画も良いしドラマも良いです。それともゲームとか旅行もあるでしょう。 自分の趣味から始めるのが大切だと思います。 もしドロンが趣味だとしたらわざわざググってみる。 そして英語のページから探すんです。 最初は無理があるけど好きなイメージなどが見つかったら読みたいでしょ? そのページをスクリーンショットかプリントでも良いです。 その文書の単語を探して読んでみるのが第一歩ですね。 最初は辛いでしょ。 私の場合には最初には単語10個だけ探しました。 1日10個だけ辞書から探して残りは捨てる。 さらに10個をその場で暗記してそれで終わり。 翌日3~4個し

面倒くさいORACLEの文字化け状況

ORACLEはそもそもUTF-8をサポートしてほかの言語はサポートはしているって書いてますが親切ではないようです。 現在サーバー側は昔からUS7ASCIIに設定して日本語を入れてしまい、データは7ビットASCIIモードで読み取りながら日本語のコートがOS側とクライアント側で変換しない必要があります。 クライアント側で文字化けの解決にはNLS_LANGの設定が効くクライアントが必要ですが、一部の有料クライアントにはサポートするようです。 接続構造は参考に https://www.oracle.com/technetwork/jp/content/charcterset-250314-ja.pdf の19スライドのように クライアントからNLS_LANGをUS7ASCIIに設定しても その設定した言語にもらったUTF-8のデータをクライアントが変換すると NLS_LANGを設定しても意味がないようです。 ORACLE SQL Developerがこの様です。 ODBCと直接接続は必ずUTF-8に変換してしまうのでUS7ASCIIになっているDBからはクライアントをいくら変換しても文字化けのままです。 必ずOCI接続を通じてクライアント側から読み取らないとUS7ASCIIは勝手に変換されますね。 この全ての条件が満たした無料クライアントはA5mk2の2.9.1バージョンだけですね。 A5MK2 ver.2.9.1 : https://a5m2.mmatsubara.com/download/a5m2_2.9.1_x64.zip 2.9.1 バージョンでサーバーを設定する場合Uicode変換を強制に無視するオプションがあります。 多分このバージョンの時点ではUTF-8をメインにして設計したDBが少なかったから文字化け対応のためできたオプションでしょう。 しかし、A5mk2の新しいバージョンにもまた結果の変換をしないオプションがなくなって文字化けしてしまいます。開発者はもうUTF-8ではないDBはないと思ってるでしょう。まだまだ残ってますよ~。 クライアント側からの変換などに参考になればと思います! まだ直接お仕事になさってますか? もう遅いです!ソフトウェアロボットにお仕事を任せてどの位自分の作業分量が減ってるかをご確認ください! https://talklowy-jp.b