TerraFormでAzure環境作って沼にハマったおはなし

f:id:ecb_ssakagami:20201208153432p:plain



前回の投稿からだいぶ日が空いてしまったサボり癖のある窓際社員のガミさんです
コロナが収まる気配がないですが気持ちだけは元気です

さて、本題です。
今回は社内でIaCを推進せい!ということでAzure環境をTerraFormで構築したおはなし

ハマりポイントを重点に記載をしているのでIaCってなに?TerraFormってなに?
という人はググってみよう!
必要があればIaCとTerraFormの記事もかきまする

天の声
えらいひと
おーい
ヒマやろ?
Azure環境簡単に作れるようにしてくれや!
開発環境、検証環境、商用環境も簡単につくれるようにな!
ほえー
ヒマじゃないのに・・・
今話題のIaCってやつやな
(承知しました!)
既読
2:30
えらいひと
また心の声と逆やで
ちゃちゃっと頼むわ
ほな

f:id:ecb_ssakagami:20201208171143p:plain

既読
2:30
※画像はイメージです。本当はちゃんと指示されました!
※LINE風CSSとスタンプはナコさんのサイトの素材を利用させていただいております。

続きを読む!

まずはGoogle先生に相談から
Googleせんせい

f:id:ecb_ssakagami:20201209140411p:plain

ぐぐるせんせい
なにが知りたいねん?

Azure環境をIaCでつくりたいん!
なんか知ってたらおしえてーな
既読
2:35

f:id:ecb_ssakagami:20201209140411p:plain

ぐぐるせんせい
それならTerraForm使うと幸せになれるで!

f:id:ecb_ssakagami:20201208171242p:plain

既読
2:35
それからつくられたAzure環境からIaCへのコード化はできるんか?
既読
2:36

f:id:ecb_ssakagami:20201209140411p:plain

ぐぐるせんせい
AWSさんとちゃうねん
TerraFormerみたいな便利なツールはAzure用にはないんやで!
セコセココード書いて頑張りな!

f:id:ecb_ssakagami:20201208171235p:plain

既読
2:37


さてここからがAzure TerraForm沼のはじまりでした・・・
ハマりポイントその1
恐ろしく時間だけが奪われていく
 TerraFormのリファレンスから構築に必要なリソース名を検索して実際にコードをAzureに流してみる

手動で構築したリソースとTerraFormで構築したリソースの差異を調べる

リソース内の未設定の項目のコードを書いてまた差分確認・・・
これをリソース分繰り返し実行していく
そのあとは商用、検証、開発環境用にプランをわけたりだなんだりだと・・・
本当に時間だけが搾取されていく

まさに沼

f:id:ecb_ssakagami:20201210143529p:plain



ハマりポイントその2
TerraFormの実行でエラーがよく発生する・・・
しかもエラーが発生するまでに1回あたり20分くらいかかることもある
他の人のPCだと動くお前の環境だけおかしい!(通称:おま環)問題が発生しまたも時間搾取が。。。
これを解決するのにGoogle先生とずっと会話を続け
・TerraFormのバージョンが違う
・ARMテンプレートのバージョンが違う
・BashじゃなくてPowerShellでやってみろ
・MacじゃなくてWindowsでやってみろ
といろいろアドバイスをいただいても解決しませんでした

そしてたどりつたいところはAzure CloudShellを使うということでした

おま環の駆逐を目指して今度はAzure CloudShellの調査を開始
調査、検証事項を全て書いてしまうと全3回くらいのブログ記事が書けてしまうのでちょっと割愛!
・CloudShellには元々TerraFormがインストールされているが安定版(0.13.3あたり)をインストールしよう!
binフォルダは保持されるけどセッションが切れるごとにTerraFormバージョンが元に戻るので・・・
初回実行時
mkdir bin
cd bin
wget https://releases.hashicorp.com/terraform/0.13.3/terraform_0.13.3_linux_amd64.zip
unzip terraform_0.13.3_linux_amd64.zip
$env:PATH="$HOME/bin/:"+$env:PATH
terraform -version

2回目以降
cd bin
unzip terraform_0.13.3_linux_amd64.zip
$env:PATH="$HOME/bin/:"+$env:PATH
terraform -version
・CloudShellのストレージは各アカウント容量が決まっている(5GBと説明があるが体感1GBくらい)のでTerraForm安定版のダウンロードとtfファイルくらいしか置くのをやめよう!
・毎回az loginが必要かつ20分(とは書いてあるけど5分で落ちてた時もあった)操作しないとCloudShellが落ちるので操作は一気に!
・ローカルPowerShellのTerraFormで使えていた[Invoke-SqlCmd]が使えなくなるので[sqlcmd]を使おう!
・パスワード自動生成などで[$'` ]を使用するとTerraFormがうまく動かないのでパスワード生成から外しておこう!

それ以外の注意事項は普通にTerraFormを使うのと変わらないので割愛します
※100スター⭐️到達したら真面目にTerraForm記事かきます
これでおま環もバス係数が1の状態も回避できる!

Tipsをいくつか書こうと思っていたのですがダラダラと沼のおはなしを続けてしまったので一旦おしまいにしておきます。
ちなみに書こうと思っていたTipsは↓です
・マルチテナント環境にテナントごとのリソース(ストレージとかKeyVaultとか)をループで簡単に追加したい!
・TerraFormでSQL Serverに対してSQLを自動実行する方法
などなどネタはあるのでマイペースにやっていきたいと考えています

~ecbeingでは、新しいことに楽しんでチャレンジできるエンジニアを大募集中です!~
careers.ecbeing.tech



Azure Cosmos DBについて① ~NoSQLを知る~

f:id:ecb_tkaihatsu:20201130092545p:plain
AzureComsomDB

はじめに

ブンブンHello World.

どうも開発です。

最近はNoSQLというものがだいぶメジャーになってきましたね。

プロダクト開発統括部でも過去にAzure Cosmos DBを用いたPoCを行ったことがあり、その可能性にはとても驚かされました。

そのCosmos DBは最近ではオンラインセミナーなども開催されており、かなりホットな内容であると感じています。

そこで今回は、PoCの経験も踏まえてCosmos DBについて語っていきたいと思います!

今回は、「NoSQLとは?」「Cosmos DBとは?」といったことに焦点を当てて解説したいと思います。

  • はじめに
    • Cosmos DBとは
    • RDBとNoSQL DB
      • RDB
        • ACID特性
      • NoSQL
        • CAP定理
        • BASE特性
    • Cosmos DBの特徴
      • Good
      • Not Good
      • パーティションとRU
  • おわりに
  • 参考文献
続きを読む

.NET Core の設定情報をデータベースに格納して実行時に上書きできるようにする

f:id:ecb_mkobayashi:20190924113406p:plain

こんにちは、アーキテクトの小林です。

前回の記事で「データベースから設定情報を読み込む独自の ConfigurationProvider を作成して紹介してみたい」と書いておきながらも、コロナの影響やプロジェクトに忙殺されてしまったこともありまして、すっかり間が空いてしまいました。

今回は応用編となっていまして、ややディープなネタになっております。.NET Core の設定情報の基本から知りたい方は、以下の記事から先にお読みいただければと思います。

blog.ecbeing.tech blog.ecbeing.tech

続きを読む

FacadeとMediatorは似ている?~デザインパターンのとらえ方~

f:id:ecb_smiyahara:20201012183634p:plain


こんにちはecbeingでアーキテクトをやっている宮原です。


皆さんデザインパターンについてはどのくらいご存知でしょうか?
「かなり自信がある」という方も「名前は聞いたことあるけど・・・」という方もいると思います。

今日はそんなデザインパターンの中から「Facade」と「Mediator」を取り上げます。

FacadeとMediatorの類似性??

ある程度デザインパターンに詳しい方なら、「FacadeとMediatorは似ている」というタイトルを読んで『あれ、そうだったっけ?』となるかもしれません。


この考え方は自分が発想したものではありません。
下記に紹介する書籍「アジャイルソフトウェア開発の奥義(以下「アジャイル奥義本」)」の第15章に書かれている内容なのです。
www.amazon.co.jp

『15章:FacadeパターンとMediatorパターン』
この章で取り上げる2つのパターンの目的は共通して言える。
どちらのパターンも、ある種の方針*1をオブジェクトに強制する。
Facadeパターンは上から方針を強制し、Mediatorパターンは下から方針を強制する。Facadeパターンは視覚的にとらえることができる制約的な方法であるのに対し、Mediatorパターンは視覚的にとらえることはできない方法で方針を強制する。
(アジャイルソフトウェア開発の奥義 p.223 より)

この抜粋した文章を読んで、『うんまあそうだよね』という感想をもった方。
申し訳ありません。
当記事はこの抜粋文章をこのあと延々と説明をするだけの記事です。
得るものはないのでそっ閉じして下さい。


それ以外の『日本語は分かるが意味がわからん』という感想を持った方、あなた達こそがこの記事がターゲットとする読者の方々です。


是非最後までお付き合い下さい。

*1:ここで使われる「方針」とは、「DBをオープンしたらクローズする」「入出力の文字コードはUTF-8を使用する」などプログラム上でのルールのことです。

続きを読む

SOLID原則をまとめてみた Part1 ~SOLID原則とはなんぞや編~

  • はじめに
  • SOLID原則とは
  • どうしてSOLID原則が生まれたのか
    • ダメなソフトウェア設計の4つの原因
      • Rigidity-剛性
      • Fragility-脆弱性
      • Immobility-不動性
      • Viscosity-粘性
    • 本当の原因
    • どんな変更が設計をダメにするのか
  • おわりに&次回記事に続く…

はじめに

はじめましてorこんにちは!
ecbeing2年目、R&D部門所属のいかちゃんです。

これまでは、Dockerの記事やスクラムに関する所感記事、JavaScriptライブラリに関する記事を書きました。
blog.ecbeing.tech

そして今回…というより本シリーズでは、泣く子も黙る『Clean Architecture』本を参考に…。
https://www.amazon.co.jp/dp/B07FSBHS2Vwww.amazon.co.jp ソフトウェア設計の5つの原則として名高い「SOLID(ソリッド)原則」についてまとめていこうかと!

…既にSOLID原則をご存じの方は、「すごく難しい話題をまとめるんだな」と察していただけましたかね…?

SOLID原則は「原則」と名が付いているように、非常に概念的な話が多く。
※具体的な実装の話ではなく、もっと上位の概念の話が多い…という感じです

実は筆者は新卒のころにSOLID原則について学ぶ機会があったのですが…。
趣味でプログラミングしてた程度の知識しか持ってなかったからか、さっぱり身につかず。
そんな状態でSOLID原則を見ても、2週間後には「SOLIDのSってなんだっけ…」となるくらいに頭から消え去っちゃいました。

しかし、そんな筆者も今年で2年目(とちょっと)。
様々なプロダクトにプログラマとして関わってきた今の筆者なら、以前よりもSOLID原則の事が分かるようになる…と淡い希望を抱き、まとめてみようと決心した次第です。

後、社内の凄腕アーキテクトの青木さん(めっちゃすごい)が、こんなことを話してくれ…。
※筆者の要約なので、これをまんま話したわけではないです

世の中の様々なアーキテクチャを学ぶと、新技術を学ぶときに「その技術がどんなアーキテクチャを採用したか」が分かるようになる。
例えばMVVMを知っていれば、Vue.js製のプロダクトを見た時に「画面上へどんなデータが出力されるのか」はViewをたどれば見つける事が出来る。
「どこのフォルダやファイルにどの様な処理が書いているか」が、その技術を知らなくても推測できるようになるのだ。(ここ重要)
十分な知識と良く練られた良質なソフトウェアであれば、僅かなコードを見るだけで何のアーキテクチャを採用したのかが分かるようになり…。
そこまでのレベルにたどり着くと、新技術のinput速度が圧倒的に早くなる。

日進月歩が激しいこの業界で、爆速input力を身につけられればエンジニアとしてものすんごい強みになりそうだなと思い。
筆者もそうなりたい!と強く思ったというのも動機です。
((というかこっちが本命

その取っ掛かりにまず、SOLID原則を学んで行こうかなと。

…序章が長くなってしまいました…。
早速本題、「SOLID原則をまとめてみた」に入っていきましょう!

続きを読む

(元)データサイエンティストらしく、見える化をしてみたって話

f:id:ecb_tkaihatsu:20200730174359p:plain

この記事は前回(TSTSTS)の続きです。

前回の記事は ↓↓↓↓↓こちら↓↓↓↓↓

blog.ecbeing.tech

はじめに

ブンブンHello World.

最近はフロントエンドよりのコーディングにハマりつつある開発です。

どうせフロントエンドやるなら、見た目に凝った何かを入れたい。

だってフロントエンドだもの。

そんな感じで今回は、実行結果をグラフにしてそれっぽい感じにする方法をまとめたいと思います。

見える化、出来ていますか?

  • はじめに
  • 前回までのあらすじ
    • TS入門してみた
    • 課題点
  • vue-chartjs
    • Vue.js
    • vue-chartjs
  • 何はともあれ実装
    • 環境構築
    • vue-chartjsのコーディング
    • 合☆体
  • 結果
  • おわりに
続きを読む

バーコードリーダーをブラウザから使えるようにしたい!JSのバーコードリーダーライブラリを調査しました

  • はじめに
  • 技術調査まとめ
    • 余談: サーバーサイドで何とかする選択肢について
  • QuaggaJSについて
    • QuaggaJSの素敵ポイント
    • QuaggaJSの注意ポイント
  •  まとめ

はじめに

はじめましてorこんにちは!
ecbeing2年目、R&D部門所属のいかちゃんです。

前回や前々回には、Dockerの記事やスクラムに関する所感記事を書きました。
blog.ecbeing.tech blog.ecbeing.tech

そして今回は…技術寄りな記事となります。
具体的には、「バーコードリーダーが実装可能なJavaScriptライブラリについて」まとめていこうかと思います!

…というのも、半年前程に自分が所属するプロジェクトから「ブラウザベースでバーコードリーダーを実装してほしい」というオーダーがありまして。
また、「アプリ形式ではなく ブラウザから 利用したい」という条件付き。
((アプリ形式なら実践してみた系の記事はわんさかあるんですけどね

なぜこの様な条件が付いたかというと…。
当時の(今もですが)プロダクトはブラウザベースで稼働するものでして。
バーコードリーダーのためだけに、わざわざiOSやAndroid用のアプリを作るのは高コストだという背景があります。

「ブラウザベースでバーコードリーダーを実装してみた」系の記事は意外と少なく…。
中々いいJSライブラリが見つかりませんでしたが、それでも何とか3つほどライブラリを見つけられたので、こうして記事にまとめてみた次第です。

前置きが長くなりましたが…それでは記事本編へ参りましょう!

続きを読む