2020年09月

16

ハイブリッド/マルチクラウド時代だからこそIBMのストレージ

IBMの岡田です。

前回の「OpenShiftに代表されるコンテナ環境へのIBMストレージの対応」でも触れた通り、ここ数年の傾向として何でもかんでもクラウドに移行するという時代は過ぎ、従来型の IT インフラとクラウド環境とを上手く使い分け、あるいは連携しながら、目的の業務アプリケーションを動かしていく方向になりつつあります。いわゆるハイブリッドクラウドというものです。
そして、パブリッククラウド自体もそれぞれのサービスにより使い分ける風潮があり、今やパブリッククラウド・ユーザー企業の半分以上が、複数のパブリッククラウドを使っているのではないかと思われます。いわゆるマルチクラウドと呼べるものですね。

しかし、なかなか統合的に管理するというところにまでは至っておらず、クラウドを含めたサイロ化が起こっている状況です。
このような運用ではアプリケーションの適材適所はおろか、データさえ十分に使えていないことは明白です。

今回はこのようなハイブリッド/マルチクラウドの状況の中でデータを上手く連携し活用していくために、IBMのストレージにできるソリューションを紹介しましょう。

 

ハイブリッド/マルチクラウドの位置づけ

以下の図は、ハイブリッドクラウド、マルチクラウドを模式的に表したものです。
オンプレ環境のプライベートクラウドまで含んでマルチクラウドという人もいますし、従来型の物理サーバーや仮想化された VM 環境もハイブリッドクラウドのオンプレミス部分の一部と考える人もいます。人によっても会社によっても捉え方は色々ですが、ここでは敢えて従来型 IT もハイブリッドクラウドの一部として話をしたいと思います。

図1. ハイブリッドクラウドとマルチクラウド

 

IBM Spectrum Virtualize for Public Cloud とは!?

IBM Spectrum Virtualize for Public Cloud(SV4PC)は、第一回目第二回目のブログでも登場した IBM のメインストリームとなるブロックストレージ、FlashSystem にも搭載されている管理機能ソフトウェア、これをパブリッククラウドでも使えるようしたものです。
つまり、SV4PC はハイブリッドクラウドやマルチクラウドに対応したストレージ製品です。

SV4PC を知れば FlashSystem を知ることができますので、SV4PC の機能を紐解いていきましょう。

 

外部仮想化機能

2003年、この Spectrum Virtualize ファミリーの元となる製品が生まれました。SAN Volume Controller、通称 SVC です。
今でもこの製品は最新のテクノロジーを装備してファミリーの一員です。(IBM Spectrum Virtualize for Public Cloud も Spectrum Virtualize ファミリー製品です。)

そこから脈々と受け継がれた外部仮想化という機能は、IBM および他社ストレージ製品約500種類を配下に接続可能で、これを仮想化して自身のストレージとして扱うことができるものです。

図2 外部仮想化機能

もちろん、既存で使われているストレージのボリュームや保存されたデータを生かしたまま配下に収めることができるため、オンライン・データ移行はもちろん、コピーサービス(スナップショット等の機能)を持たないストレージにそういった機能を与える事もできます。

この機能を使う事で、FlashSystem では他社製品を含めた古い製品から簡単に最新のテクノロジーにデータを引っ越すことが可能です。

パブリッククラウド上では、SV4PCがプロバイダーが提供する基本的な機能しか持たないブロックストレージを配下に置くことができます。
これにより、最新のデータ削減機能の他、ブロックレベル自動階層化のEasy Tier(補足参照)、FlashCopyや筐体間コピーを含むコピーサービス(補足参照)、といったテクノロジーも使用可能となるわけです。

 

図3. データ移行のイメージ

 

様々なデータ削減機能

FlashSystem 5010 を除く Spectrum Virtualize ファミリーには、いくつかのデータ削減機能があります。
これらは DRP(Data Reduction Pool)というデータ削減にはなくてはならない機能を実装した Spectrum Virtualize ファミリー特有のストレージプール上で実現されます。また DRP での各処理単位はフラッシュ系デバイスに最適化されています。

図4.Data Reduction Pool

具体的には「リアルタイムデータ圧縮機能」「重複排除機能」「シン・プロビジョニング機能」がサポートされています(一部組合せによりサポートできないデバイスがあります)。
※詳しくは補足をご覧ください。

 

Spectrum Virtualizeファミリーのハイブリッドクラウド/マルチクラウド対応

触れてきた通り IBM の Spectrum Virtualize ファミリーであれば、オンプレミスの FlashSystem あるいは SVC とパブリッククラウド上の SV4PC とでデータ連携できるので、データの観点でハイブリッドクラウド対応ができます。
また、パブリッククラウド同士でデータ連携することもそれぞれに SV4PC を置くことで可能となり、マルチクラウド対応もできます(2020年7月時点、IBM Cloud と AWS に対応)。

図5. ハイブリッド/マルチクラウドのデータ連携

さらにこの方法を使えば、他社の既存データも活かすことができます。外部仮想化機能が使えるからです。

つまり IBM の Spectrum Virtualize ファミリーを使うと、他社ストレージ製品も含めてハイブリッドクラウド対応できる事になります。

では、データをハイブリッド/マルチクラウド連携できると何が嬉しいのでしょうか。

 

ハイブリッドクラウド/マルチクラウドの利点

グローバルでは、一番広く使われているのが災害対策用途です。
被災時に本番環境が使えなくなった際も、パブリッククラウド側で仮想サーバー、コンテナなどを使い業務を継続できるからです。

今求められるデータ活用としては AI/アナリティクスなどと言うものもあります。
オンプレミスで使えるものもありますが、手軽にやろうとすると各パブリッククラウド上で提供している AI サービスを使うのが早いですね。最初に触れた通りサイロ化されたデータをパブリッククラウドと連携するにもハイブリッドクラウドは有効です。

バックアップ先としてパブリッククラウドを使うと、いらぬ投資をすることなく遠隔保管が可能となります。
通常テープを使った遠隔保管ですと保管場所である拠点、定期的な搬送といった固定費が発生します。最悪の場合、本番業務側が被災した場合にもデータをリストアしなければならないことを考えると、保管場所にリストアする仕組みが必要となります。これも大きな投資となるでしょう。
パブリッククラウドをバックアップ先とした場合それだけで遠隔保管が実現でき、必要な場合のみ仮想サーバーも立てることができるため DR としての役割も果たせるのです。

また、クラウドに業務を移行するというケースもまだまだ発生しますね。
この際クラウドプロバイダーが提供している方法もありますが、移行対象となるデータが多量にあると、なかなか与えられた方法を用いて計画通りに移行することは困難な場合があります。特にプロバイダーから送られたハードウェアを仲介して行う方法は、移行の間は業務を止めて対応する必要があります。これではビジネス的なインパクトが発生します。
ハイブリッドクラウド形態でのクラウド・オンプレミス間のデータ同期であれば業務を止めずに対応でき、万が一クラウドに移行したことで何らかの不具合を生じた場合にも即座に元の環境に戻すことができます。

これらの有益なハイブリッドクラウドのデータ連携にマルチクラウドのデータ連携要素が加わると、更に有益なことがあります。
最近の風潮としては、パブリッククラウド上にデータを置く場合でもミッションクリティカルなものの場合には、AZ(アベイラビリティーゾーン)を跨ってレプリケーションを取ることが一般的になってきています。冗長性を保つという意味では、異なるパブリッククラウドにコピーを持つことも有効でしょう。
このような用途にもマルチクラウド・データ連携は役に立ちます。

またメジャーなパブリッククラウドは、基本的にグローバル展開をしております。
自身で海外にサイトを立ち上げる必要なく、容易に海外展開できるといった利点や、国内でも東阪の災対環境も手軽に築くことも可能です。

図6. ハイブリッド/マルチクラウドで実現できるソリューション

 

ハイブリッドクラウド・データ連携の具体例:クラウドへのデータ移行

パブリッククラウドに業務を移行する際に、ハイブリッドクラウドの接続形態を使うことで既存の業務を止めないオンラインデータ移行が可能です。(ただし既存ストレージの仮想化のための接続変更時は短時間ですが止める必要があります。)

図7. ハイブリッドクラウド活用例・クラウドへのデータ移行

オンプレミスとパブリッククラウド、あるいはパブリッククラウド同士でのレプリケーションは方向を変えることも可能ですので、もししばらく使ってみて移行先で業務がうまくいかないなどの不具合が生じた場合は、データをオンプレミス側に戻すことも可能です。

他の活用例も結局はこのレプリケーションを使って双方を連携させることによりますので、アイディア次第でお客様の用途に合わせて色々な活用方法が見つかるかもしれません。

 

クラウド上ではこんな使い方も

SV4PC だけでも面白い使い方ができます。

多くのパブリッククラウドの環境下では、その環境内で使える仮想ブロックストレージが用意されています。
プロバイダーにもよりますが、大雑把に言ってしまえばクラウドは大規模な物理リソースを小出しにして使っている都合上、様々な制約があったり、性能の低いリソースを使わないとコストがかかりすぎるなど難しい局面も持っています。

例えば一つの仮想ブロックストレージの上限容量です。あるプロバイダーでは 16TB までしか使えなかったり、IOPS の上限にひっかかったりします。
このように、デフォルトのままではパフォーマンス要件をこなせないような場合でも、SV4PC で仮想ブロックストレージを複数束ねることで、仮想サーバー側に提供するストレージをスケールアウトすることができるので解決できたりもします。

また、データがホットな時期は SSD、旬が過ぎると HDD レベルで充分なデータを扱う場合、そもそも一時的なパフォーマンスのために全データを同じ SSD に置いておくのは無駄があります。
このような場合、最小限必要な SSD と充分な HDD を SV4PC で束ねつつ、前述の Easy Tier のような自動階層化機能を使うと、意識することなくホットデータは SSD で処理、その後は HDD へ配置されるので、クラウド上のストレージコストを全体的に減らすことができたりもします。

さらに、SV4PC のシン・プロビジョニング機能を使えば効率の良いコスト削減が可能となります。
通常の場合、仮想ブロックストレージの払い出しは見込み容量を先に決めてからその分払い出すことになり、運用後の拡張の手間を考えると、あらかじめ余裕を持った容量を払い出しがちです。この場合、実際に使用していなくとも払い出した容量は課金対象となります。
これに対しシン・プロビジョニングは、実際に存在する容量以上のストレージ空間を切り出すことができるのと、後から不足しそうな容量分の仮想ブロックストレージをストレージプールに加えることもできるので、最小限の容量から始めることができ、容量課金を削減することができます。

図8. パブリッククラウド上でのSV4PCの活用

なお何度も言いますが、SV4PC は今後のコンテナ環境にも対応しております。
ここまで見てきた通り、SV4PC はクラウド全盛の今だからこその機能を備えた Software Define Storage ソリューションであることが分かると思います。

いかがでしたか?

ハードウェアはもちろん技術の塊ですが、ソフトウェアのみでも十分に使える IBM Spectrum Virtualize ファミリー、少しは興味を持っていただけたのではないでしょうか?

次回は「最新のデータのライフサイクル管理」ということで ESS、Sepctrum Scale、オブジェクトストレージ、そして Spectrum Discover といった製品に触れてみたいと思います。

乞うご期待!

 

補足

1)リアルタイムデータ圧縮

バッチ処理で圧縮するのではなく、データの書き込み時に圧縮処理をして記憶域に書き込む圧縮方法です。FlashSystem 5030 と SV4PC を除きハードウェア・アクセラレータを活用できます。
もちろん 5030 および SV4PC もコントローラのリソースのみの処理ですが暗号化機能を実現しています。
圧縮率は、対象となるデータの種類によって異なりますが、一般にデータベース、メール、仮想サーバーイメージなどのファイルが高いと言われています。
以前はオフィスデータなども高かったのですが、最近はすでにオリジナルのオフィスファイル自体で圧縮済みですので、あまり効果は期待できなくなっていると言われます。

更に DRP の機能とは別に、IBM 特有の FlashCore モジュール(略して FCM。FlashSystem 5100, 7200, 9200/R で使用可能)であれば、モジュールそのものにインライン・ハードウェア圧縮機能があります。これはモジュール内のハードウェア的なデータの通り道にワイヤードロジックによる圧縮機能を設けているため、性能に影響を与えません。
ちなみにこのワイヤードロジックには暗号化機能も盛り込まれており、同様に性能に影響のない暗号化を実現しています。

 

2)重複排除

データのなかに同じパターンを見つけて、冗長なデータを削減することで容量を節約する機能です。特に仮想サーバーイメージなどには有効な手法です。
以前は非常に負荷がかかる作業だったため、バックアップなどに限定して使われていた技術ですが、昨今は性能の向上により、通常のストレージでも当たり前に使われる技術となりました。
以下は非常に単純化したインラインで扱われる重複排除のイメージです。バックアップ等での処理はこの限りではありません。

図9. 重複排除

実際はこう単純ではありません。
書かれたデータのパターンに応じたフィンガープリントと呼ばれる代替え値をハッシュ関数により導き、新たに書かれるデータのハッシュ値がすでに存在するフィンガープリントと一致している場合は、データそのものは書き込まず、参照するフィンガープリントのポインターのみを管理テーブルに記録する。これによりデータを間引くことができ、書き込み容量を削減することができるのです。

DRP 上での重複排除の特徴はフィンガープリントを同一ボリューム内のみならず、同じ DRP で定義された別のボリュームも含めて参照していることです(※図4参照)。同じプール内でバックアップなどのボリュームが定義された場合などに効果を発揮できるからです。

図4.Data Reduction Pool

 

3)シン・プロビジョニング

こちらは、データ削減と言うよりはサーバーから見た際の話になります。
通常、ストレージ装置側で定義したボリュームをそのまま OS で認識させ使用することになります。その際の容量は、ストレージ装置のボリューム定義そのままの容量となります。

図10. シン・プロビジョニング

シン・プロビジョニングを使うと、その容量定義を物理的に存在しない容量も上乗せして定義することができます。この場合消費されるストレージ装置の容量は実際に書き込みが起こった時にそのデータ容量分ずつとなります。
もちろんその存在しない容量分に書き込みが発生するとエラーになりますので、そうなる前に物理容量を追加する必要があります。同じストレージプール内の複数のボリュームで、実際に存在する実効容量を共有して消費するといった使い方が効果的です。が、OS 側からは何も意識することがありません。

この方法は、実はパブリッククラウドのように払い出し容量で月額課金されるようなサービスでは、より有効な節約方法となります。

 

4)Easy Tier

Spectrum Virtualize ファミリーには、もう一つ特徴的な機能として自動階層化機能があります。
通常データの階層管理というと、ファイルレベルで実装するものをイメージされる方が多いのではないでしょうか?

Easy Tier はブロックレベルでありながらストレージの負荷情報を自ら学習し、アクセスの集中するホットなデータは Flash系のデバイス、アクセス頻度の低いデータは容量単価に優れる大容量・低速の HDD といった階層にデータを AI を使ってストレージの機能で動的に移動させる機能です。

図11. EasyTierの動作イメージ

この機能を使うと高価な半導体系のストレージデバイスの容量を節約し、安価なハードディスクを増やすことで、パフォーマンスを下げずに全体の容量単価を下げることができます。
オンプレミスの FlashSystem はもちろん、払い出し容量で月額課金されるパブリッククラウドでも有効な節約手段となります。

 

5)コピーサービス

今や多くの廉価なストレージ装置もスナップショット、レプリケーションといった機能は当たり前になっています。

図12. 様々な用途に使えるコピーサービスの数々

スナップショットなどの瞬間のボリュームイメージを切り取る機能は、一般的にポイント・イン・タイム・コピーと呼び、IBM の場合は FlashCopy と言われる機能になります。
こちらは通常ストレージ装置内で使われる機能です。バックアップを取るときなどアプリケーションや RDB などと連携して、静止点をとるのに有効な機能です。

これに対して、ストレージ装置間で関連づけたボリューム同士で同期を取り、それぞれのボリュームを常に同じデータで満たす方法がレプリケーションです。
スナップミラー、ボリュームミラー、リモート・ミラーあるいはリモート・コピーなど、メーカーによって呼び方は様々ですが、基本的には時間的ズレのない同期型のものと、多少の時間的ズレを容認する非同期のものとに大別されます。
前者は銀行など災害などでのデータ損失を認めないような要件で使われ、拠点を跨ぐ場合、それなりの高価な設備(ネットワーク設備であったり拠点設備であったり)と共に使われます。後者はデータの多少の損失は容認するか、または別の方法(ログデータとかとの併用など)で補うかして、むしろ、より遠隔にデータを退避することを優先するなどの目的で使われます。広域災害などへの対策が多いですね。

考慮すべき事項に、特にレプリケーションは同じストレージ装置同士であると言う大前提があります。メーカーごとに使っている技術が異なるからです。
IBM の場合、Spectrum Virtualize ファミリーであれば相互接続が可能です。つまりオンプレミスのFlashSystem または SVC とパブリッククラウド上の SV4PC との接続が可能なのです。これが IBM ストレージがハイブリットクラウドに対応できると言う一つの根拠です。
もちろん前回触れた通り CSI(Container Storage Interface)にも対応していますので、コンテナ環境にも対応可能です。

接続方法について以前は、ストレージ機器同士の同期ということでより早く安全な FCP(Fibre Channel Protocol)に頼っていましたが、今日では非同期を前提に充分に IP 接続でも対応できるようになりました。
また、帯域以上のデータ転送を余儀無くされる初期同期が問題になりますが、前述のシン・プロビジョニング・ボリュームを対象とすることでボリューム全転送を必要とせず差分だけで可能となったり、データそのものも効率的な圧縮・重複排除の活用で小さくなったというのも大きいですね。

 

 


この記事に関するお問い合わせ

エヌアイシー・パートナーズ株式会社
企画本部 事業企画部

この記事に関するお問い合せは以下のボタンよりお願いいたします。

 


関連ページ

 

 

その他の記事

2025年10月10日

現地からお届け!【参加レポート】IBM TechXchange 2025 Orlando

公開日:2025-10-10 こんにちは。 現在エヌアイシー・パートナーズ 技術企画本部のメンバーで、アメリカのオーランドで開催されている「IBM TechXchange 2025」に参加しています。 (現地時間:2025年10月9日、日本時間:2025年10月10日時点) 本記事では 現地からの速報 として、このイベントの概要や見どころ、最新情報をお伝えいたします。 目次 イベント概要 IBM Techxchange 2025 主要メッセージ - 1. Anthropicとのパートナーシップ発表 - 2. コード開発AI Agent「Project Bob」 - 3. AI基盤のための「Project Infragraph」 AI Accelerator “Spyre” Observability さいごに お問い合わせ イベント概要 IBM TechXchange は世界各国のIBMファンが集う年に1度の技術者向けイベントで、今年は3回目となりました。 年々規模も参加者も拡大しており、IBM TechXchange 2025 では、1,800以上の技術者向けセッションがあり、その中で400以上のハンズオンラボやデモが展開されています。 今年はアメリカのフロリダ州にあるオーランドの Orange Country Convention Center にて10月6日から10月9日の4日間で開催中で、日本から100名近くの方々が参加しています。 今年のテーマは「we are GO / Explore Build Launch 」です。 IBM Techxchange 2025 主要メッセージ TechXchange 2025の基調講演では、AIエージェントを活用・展開するために必要となる4つの要素を紹介していました。 この4つの要素のうちEcosystem・Developer Tools・AI infrastructure managementについてお伝えします。 Ecosystem IBMが単独でAIエージェントを開発・展開するのではなくパートナーシップやIBMパートナーがAIエージェントを開発・運用することでOpenな展開をしていくという方針となります。 この方針を実現するためにAgent Connectプログラムを展開しており、多数のAIエージェントを早期に提供することを目指しています。 Developer Tools Developer Toolsとしてドメインエージェントの提供があります。 ドメインエージェントとは、業務特化型のエージェントを指します。例えば購買業務に特化したエージェントであったり、人事業務に特化したエージェントです。 AI infrastructure management AIを利用する上で必要となる基盤の管理を指します。これを実現するためにProject “Infragraph” というプロジェクトでソリューション提供を目指しています。   他にも、TechXchangeでは様々な新しい発表がありました。その発表の中から今後大注目となる3点について共有します。 1.  Anthropicとのパートナーシップ発表 既に日本でもニュースとなっているので認識されている方も多いと思いますが、Anthropicとのパートナーシップの発表がありました。 IBMはAIのガバナンス、セキュリティ、オブザーバビリティ分野でソリューションを提供しており、これがIBMの強みとなっています。Anthropicとの協業は、この強みを背景とした補完的なパートナーシップであると思われます。 このパートナーシップの目的は、LLMであるClaudeをIBMソリューションに組み込むことだけではありません。企業ユースでAIエージェントを開発・運用する時に検討が必要となる要素を体系化した「Architecting secure enterprise AI agents with MCP」をIBMが作成し、Anthropicがそれを検証する協業も行っています。 このガイドを参照してAIエージェントを開発することで、今後拡大が見込まれるAIエージェントを安全かつ安心して活用できるベースとすることができます。 2.  コード開発AI Agent「Project Bob」 統合開発環境(IDE)をエージェント型で提供する「Project Bob」が発表されました。 このニュースと共にかわいらしいマスコットのBobもお披露目になりました。 Project Bobを利用することで、コードをバージョンアップするための設計、テストの自動化、本番運用、コンプライアンス維持と開発のライフサイクル全体をAIエージェントを用いて自動化することができます。 Project Bobは、発表と共にPublicプレビュー段階に入りました。 開発者のワークフロー負荷を軽減してくれるProject Bob の提供開始が楽しみですね! 3.  AI基盤のための「Project Infragraph」 HashiCorpが主体となって開発している基盤自動化のためのプロジェクトです。 詳細は不明ですが、以下の実現を目指しています。 サイロを横断した統合インサイト クラウドインフラストラクチャーリソースを単一のビューで把握できます。 実用的なインテリジェンス コストの最適化、ガバナンスの強化、リスクの軽減に役立つコンテキストを提供します。 自動化の基盤 インフラストラクチャークラウド全体にわたる、次世代のインテリジェントなAI駆動型運用を実現します。 AI Accelerator “Spyre” IBM Spyre Accelerator はエンタープライズワークフロー向けのAIソリューションを提供し、AIサービスを簡単にインストール・構成・移動できる統合された推論プラットフォームとアクセラレートされたインフラストラクチャーを備えています。 Spyreのユースケースとしては、IT運用、開発、ERP、銀行・金融、ヘルスケア、保険、公共分野など、様々な業界でデジタルアシスタント、データ・コンテンツ管理、ディーププロセス統合などのプリビルドAIサービスを提供します。 Observability AI Firstとして各種機能提供、Intelligent、Integrated experienceとしてUIやDataレイヤーの統合がされるという情報が共有されました。 またAIキーワードとしてはLLMやAIのワークロードをInstanaでObservabilityする機能が2025 4Qのロードマップとして示されました。 さいごに 2日目の夜のお楽しみとして「Evening Entertainment at Universal Orlando Resorts Islands of Adventure」が開催されました。 世界各国から集まった技術者とともに過ごした Universal Orlando Resorts Islands of Adventure での一夜は格別な体験となりました。 さて、本日、来年のTechXchangeがアメリカ ジョージア州の「アトランタ」で開催されることが正式に発表されました。 次回のイベントにも期待が高まります! お問い合わせ エヌアイシー・パートナーズ株式会社 技術企画本部 E-mail:voice_partners@niandc.co.jp   .bigger { font-size: larger; } .highlighter { background: linear-gradient(transparent 50%, #ffff52 90% 90%, transparent 90%); } .anchor{ display: block; margin-top:-20px; padding-top:40px; } .btn_A{ height:30px; } .btn_A a{ display:block; width:100%; height:100%; text-decoration: none; background:#eb6100; text-align:center; border:1px solid #FFFFFF; color:#FFFFFF; font-size:16px; border-radius:50px; -webkit-border-radius:50px; -moz-border-radius:50px; box-shadow:0px 0px 0px 4px #eb6100; transition: all 0.5s ease; } .btn_A a:hover{ background:#f56500; color:#999999; margin-left:0px; margin-top:0px; box-shadow:0px 0px 0px 4px #f56500; } .table { border-collapse: collapse; border-spacing: 0; width: 100%; } .td { padding: 10px; vertical-align: top; line-height: 1.5; } .tbody tr td:first-child { font-weight: bold; width: 20%; } .tbody tr td:last-child { width: 80%; } .ul { margin: 0 !important; padding: 0 0 0 20px !important; } .ol { margin: 0 !important; padding: 0 0 0 20px !important; } .tr { height: auto; } .table { margin: 0; } *, *:before, *:after { -webkit-box-sizing: inherit; box-sizing: inherit; } .html { -webkit-box-sizing: border-box; box-sizing: border-box; font-size: 62.5%; } .btn, a.btn, button.btn { font-size: 1.6rem; font-weight: 700; line-height: 1.5; position: relative; display: inline-block; padding: 1rem 4rem; cursor: pointer; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; -webkit-transition: all 0.3s; transition: all 0.3s; text-align: center; vertical-align: middle; text-decoration: none; letter-spacing: 0.1em; color: #212529; border-radius: 0.5rem; } a.btn--orange { color: #fff; background-color: #eb6100; border-bottom: 5px solid #b84c00; } a.btn--orange:hover { margin-top: 3px; color: #fff; background: #f56500; border-bottom: 2px solid #b84c00; } a.btn--shadow { -webkit-box-shadow: 0 3px 5px rgba(0, 0, 0, .3); box-shadow: 0 3px 5px rgba(0, 0, 0, .3); }

2025年10月06日

【イベントレポート】watsonx Orchestrate テクニカルワークショップ第二回 開催しました

公開日:2025-10-06 こんにちは。てくさぽブログメンバーの高村です。 2025年9月24日に第2回「watsonx Orchestrate テクニカルワークショップ」を開催しました。 第一回(7月開催)では、アップデートされた watsonx Orchestrate の基本的な使い方をご紹介しました。詳しくは、ブログ記事「【イベントレポート】watsonx Orchestrate テクニカルワークショップ第一回 開催しました」をご覧ください。 今回の第二回では、Agent Development Kit(以下、ADK) を用いた、Pythonによるエージェント開発のハンズオンを実施しました。 また、第1回同様、ハンズオン終了後にはグループに分かれてワークショップを行いました。参加者様同士が、日々の業務で抱えている課題を洗い出し、AIを活用して解決できる方法についてディスカッションし、その結果を発表する時間を設けました。参加者同士のコミュニケーションも活発に行われ、有意義な時間となりました。 それでは、当日の様子をご紹介します。 目次 watsonx Orchestrate概要 watsonx Orchestrateハンズオン- Agent Development Kitを用いたエージェント開発 ワークショップ まとめ お問い合わせ watsonx Orchestrate概要 このセッションでは、watsonx Orchestrate概要、ユースケース、ご提供プランをご紹介しました。 watsonx Orchestrateでは、ユーザーの目的や業務に合わせたエージェント開発が可能です。開発方法としては、ローコード と コーディング の両方が提供されており、ニーズに応じて選択できます。 今回のハンズオンで使用して頂く Agent Development Kit(ADK) および watsonx Orchestrate Developer Edition は、コーディングによるエージェントやツールの開発を支援するための環境です。Toolは Python または OpenAPI 定義によって開発でき、高度な実装やデバッグも柔軟に行えます。 watsonx Orchestrateのご提供プランは、Essentials Agentic、Standard Agentic、Premium Agenticの3種類があり、特に最近ご質問の多いEssentialsとStandardの規模感と費用感についても目安をご紹介させて頂きました。 watsonx Orchestrateハンズオン – Agent Development Kitを用いたエージェント開発 ハンズオンでは、ADK と watsonx Orchestrate Developer Edition を使い、実際にエージェント開発を体験していただきました。 参加者には事前に IBM Technology Zone(以下、Techzone) の ADK 環境を予約していただき、VSCode がインストールされた環境で開発を進めました。VSCode上でADKを利用し、完成したエージェントを watsonx Orchestrate Developer Edition にインポートして動作確認を行う流れです。 実施内容 Tool・Agent の作成 watsonx Orchestrate Developer Editionで Agent の動作確認 Knowledge を使用する Agent の作成 内部基盤モデルの追加 Flow の作成 実施した内容の中でTool、エージェントの作成とwatsonx Orchestrate Developer Editionで エージェントの動作確認について簡単にご紹介します。 作成して頂いたエージェントは、入力フレーズを造語「ザルガリ語」に翻訳し、その文字数をカウントした後、ジョークを回答します。 まずADKから①Tool(translateToZargari)と②Tool(word_length)をPythonで定義してwatsonx Orchestrate Developer Editionへインポートします。下記画面ショットのサンプルはtool() 関数を利用することでエージェントが使用可能なツールとして定義します。 次にエージェントをyaml形式で定義し、watsonx Orchestrate Developer Editionへインポートします。下記がエージェントのサンプルです。エージェントのスタイル、基盤モデルの指定、振る舞い、使用するtoolを定義します。 最後にwatsonx Orchestrate Developer Editionでエージェントの動作確認を行います。下記画面ショットがwatsonx Orchestrate Developer Editionのホーム画面です。watsonx Orchestrate Developer Editionは本製品とほぼ同等の機能を利用することができます。 Previewでエージェントの動作確認を行い、想定通り入力フレーズがザルガリ語に翻訳され、文字数をカウント、ジョークが生成されることを確認しました。 Tool、エージェントの作成、エージェントの動作確認のハンズオンは以上です。その他のハンズオンについて詳しく知りたい方は、ブログの最後に記載している「お問い合わせ」までお気軽にご連絡ください。 ワークショップ ワークショップでは2チームにわかれて日々の業務やお客さまの業務で困っていることを洗い出し、AIでの解決方法を考えるブレインストーミングを行いました。 以下のステップで進行しました 個人作業:「時間がかかっていること」「困っていること」「やりたいのにできていないこと」を3つ挙げ、ポストイットに記入し、AIでの解決可能性を考える チーム作業:模造紙にポストイットを貼りながらカテゴリー分け、AI活用のアイデアをディスカッション。 チームで話あったことを発表 当日挙がった意見を抜粋してご紹介します。 「検索業務に関して検索結果が多すぎて回答にたどり着くまで時間がかかる」 「顧客からの質問に対する回答探しに手間取る」 「同じ質問に対して効率化できないか」 AI活用について RAGを取り入れる方法 予め質問と回答を用意しチャットボットで回答させるなど工夫が必要 といった意見が出ました。 その他、コード開発でのレビューや修正にAIを活用すること、複雑な社内手続きをスムーズにするためにAIエージェントを導入する可能性についても、意見が挙がりました。 AIでどのように解決できるか、具体的な方法まで議論が進んでいない項目もありましたが、参加者同士で現在の課題や困りごとを共有いただけたことは大きな収穫でした。 今回の意見交換が、社内の「クライアントゼロ化」や日々の業務改善の検討につながる一歩となり、今後の改善活動に活かしていただけると幸いです。 まとめ 第2回 watsonx Orchestrate テクニカルワークショップ では、ADKと watsonx Orchestrate Developer Edition を用いてコードベースのエージェント開発を体験していただきました。 後半のワークショップでは、日々の業務課題から、AI活用について活発な意見交換が行われ、技術的な学びと参加者間の交流の場となりました。 今後も、製品を実際に体験できるハンズオンと、参加者同士が交流・情報共有を行えるワークショップを継続的に開催してまいります。次回もぜひご参加いただけますと幸いです。 お問い合わせ エヌアイシー・パートナーズ株式会社技術企画本部E-mail:voice_partners@niandc.co.jp   .bigger { font-size: larger; } .highlighter { background: linear-gradient(transparent 50%, #ffff52 90% 90%, transparent 90%); } .anchor{ display: block; margin-top:-20px; padding-top:40px; } .btn_A{ height:30px; } .btn_A a{ display:block; width:100%; height:100%; text-decoration: none; background:#eb6100; text-align:center; border:1px solid #FFFFFF; color:#FFFFFF; font-size:16px; border-radius:50px; -webkit-border-radius:50px; -moz-border-radius:50px; box-shadow:0px 0px 0px 4px #eb6100; transition: all 0.5s ease; } .btn_A a:hover{ background:#f56500; color:#999999; margin-left:0px; margin-top:0px; box-shadow:0px 0px 0px 4px #f56500; } .table { border-collapse: collapse; border-spacing: 0; width: 100%; } .td { padding: 10px; vertical-align: top; line-height: 1.5; } .tbody tr td:first-child { font-weight: bold; width: 20%; } .tbody tr td:last-child { width: 80%; } .ul { margin: 0 !important; padding: 0 0 0 20px !important; } .ol { margin: 0 !important; padding: 0 0 0 20px !important; } .tr { height: auto; } .table { margin: 0; } *, *:before, *:after { -webkit-box-sizing: inherit; box-sizing: inherit; } .html { -webkit-box-sizing: border-box; box-sizing: border-box; font-size: 62.5%; } .btn, a.btn, button.btn { font-size: 1.6rem; font-weight: 700; line-height: 1.5; position: relative; display: inline-block; padding: 1rem 4rem; cursor: pointer; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; -webkit-transition: all 0.3s; transition: all 0.3s; text-align: center; vertical-align: middle; text-decoration: none; letter-spacing: 0.1em; color: #212529; border-radius: 0.5rem; } a.btn--orange { color: #fff; background-color: #eb6100; border-bottom: 5px solid #b84c00; } a.btn--orange:hover { margin-top: 3px; color: #fff; background: #f56500; border-bottom: 2px solid #b84c00; } a.btn--shadow { -webkit-box-shadow: 0 3px 5px rgba(0, 0, 0, .3); box-shadow: 0 3px 5px rgba(0, 0, 0, .3); }

2025年09月30日

日本アイ・ビー・エム様主催「Women in Tech Japan 夏の会」イベント開催レポート

公開日:2025-09-30 こんにちは。エヌアイシー・パートナーズ 村上です。 2025年8月20日に、IBM様が主催されている女性エンジニア中心のコミュニティ 「Women in Tech Japan」の夏の会のイベントが開催され、弊社エヌアイシー・パートナーズは会場提供(@NI+Cガーデン)という形でご協力させていただきました。 本ブログでは、イベントの様子とそこで感じ得た学びについてご報告させていただきます。 目次 Women Tech in Japanについて 「キャリアを考える」セッションから得た学び 夏のビール会! 今後の活動 さいごに お問い合わせ Women Tech in Japanについて 「Women in Tech Japan」は、2024年10月にラスベガスで開催された「TechXchange」をきっかけに発足しました。 女性エンジニアが、他社の女性エンジニアとキャリアやワークライフバランスについて語り合うことを目的としています。 日本では海外に比べてまだまだ女性エンジニアが少なく、働き方やキャリアプランを参考にするロールモデルが少ない状況ですが、女性エンジニアが輝いているIBM様がこのコミュニティをリードしてくださり、沢山の発見や学びを培う機会を作ってくださっています。 Women in Tech Japanは男性の参加も大歓迎とされていらっしゃいます。 夏の会のイベント当日は、性別や年齢、所属企業を問わず、多様なバックグラウンドを持つ方々が参加されました。 「キャリアを考える」セッションから得た学び イベントのハイライトの一つは、「キャリアを考える」をテーマにした日本アイ・ビー・エム 大久保そのみ様のセッションでした。 大久保様は国家資格キャリアコンサルトとしても活躍していらっしゃいます。 セッションから得る学びは人によって違うと思いますが、私は下記のような学びを得ましたのでご紹介です。 キャリアの選択肢は一つではなく、個々のライフスタイルや目標に合わせて柔軟に設計していくことが大切- 5年後の私が当たり前のようにイメージできなくてもいい(来年の自分を思い描く) 限られた時間をどう有効に使うかを考え実践する - 例えば・・「やりたいと思っているのに出来ていないこと」に踏み出す! 毎日をできるだけポジティブエネルギーで満たしてみたいと思うようになれた - ネガティブなことへの向き合い方を見直す 参加者の皆さまとは、その後の懇親会で本セッションの意見交換をさせていただくことができました。 大久保様、大変有意義なセッションをありがとうございました! 夏のビール会! 夕方からはNI+Cガーデンに設置しているビールサーバーをご利用いただき「夏のビール会」と称して参加者の皆さんと懇親会を行いました。 美味しい食事とクラフトビールを囲み、参加者の皆さんの会話も弾み、和やかな雰囲気となりました。 セッションでは聞けなかったキャリアの話や、日頃のちょっとした悩みを相談したりと、あっという間に時間が過ぎていきました。 このような素晴らしい機会を企画してくださった日本アイ・ビー・エムの皆様に、心より感謝申し上げます。 今後の活動 「Women tech in Japan」は、今後は下記のような継続的な活動が予定されています。 TechXchange フロリダ・オーランド にて「Empowering Women in Tech with AI」セッション(2025年10月7日)IBM TechXchange 2025 We are GO/(IBMサイト) TechXchange Japan での活動紹介(2025月12月3日)IBM TechXchange Summit Japan 2025(IBMサイト) さいごに 昨今、IT業界に限らず、共通のカテゴリーを持つ人々が集まるコミュニティが数多く存在しています。 初めてのコミュニティへの参加には、誰もが多少なりともハードルの高さを感じるかもしれません。 私自身もそうでしたが、もし少しでも興味があるなら、ぜひ一歩踏み出して参加してみることをお勧めします。 きっと、新しい出会いや、新しい発見があり、多くの経験を得ることができると思います! この度は、IBM様が主催された素晴らしいイベントに貢献できたことを、大変光栄に思います。 弊社としましては、今後もこのようなコミュニティの活動に積極的に参加・支援させていただき、女性エンジニアがさらに活躍できる社会の実現に貢献していきたいと考えております。 お問い合わせ エヌアイシー・パートナーズ株式会社E-mail:voice_partners@niandc.co.jp   .bigger { font-size: larger; } .highlighter { background: linear-gradient(transparent 50%, #ffff52 90% 90%, transparent 90%); } .anchor{ display: block; margin-top:-20px; padding-top:40px; } .btn_A{ height:30px; } .btn_A a{ display:block; width:100%; height:100%; text-decoration: none; background:#eb6100; text-align:center; border:1px solid #FFFFFF; color:#FFFFFF; font-size:16px; border-radius:50px; -webkit-border-radius:50px; -moz-border-radius:50px; box-shadow:0px 0px 0px 4px #eb6100; transition: all 0.5s ease; } .btn_A a:hover{ background:#f56500; color:#999999; margin-left:0px; margin-top:0px; box-shadow:0px 0px 0px 4px #f56500; } .table { border-collapse: collapse; border-spacing: 0; width: 100%; } .td { padding: 10px; vertical-align: top; line-height: 1.5; } .tbody tr td:first-child { font-weight: bold; width: 20%; } .tbody tr td:last-child { width: 80%; } .ul { margin: 0 !important; padding: 0 0 0 20px !important; } .ol { margin: 0 !important; padding: 0 0 0 20px !important; } .tr { height: auto; } .table { margin: 0; } *, *:before, *:after { -webkit-box-sizing: inherit; box-sizing: inherit; } .html { -webkit-box-sizing: border-box; box-sizing: border-box; font-size: 62.5%; } .btn, a.btn, button.btn { font-size: 1.6rem; font-weight: 700; line-height: 1.5; position: relative; display: inline-block; padding: 1rem 4rem; cursor: pointer; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; -webkit-transition: all 0.3s; transition: all 0.3s; text-align: center; vertical-align: middle; text-decoration: none; letter-spacing: 0.1em; color: #212529; border-radius: 0.5rem; } a.btn--orange { color: #fff; background-color: #eb6100; border-bottom: 5px solid #b84c00; } a.btn--orange:hover { margin-top: 3px; color: #fff; background: #f56500; border-bottom: 2px solid #b84c00; } a.btn--shadow { -webkit-box-shadow: 0 3px 5px rgba(0, 0, 0, .3); box-shadow: 0 3px 5px rgba(0, 0, 0, .3); }

2025年09月30日

【てくさぽBLOG】InstanaとTurbonomicを連携したリソース最適化検証

公開日:2025-09-30 こんにちは、てくさぽBLOGメンバーの和田です。 昨今、システムの複雑化やハイブリッドクラウドなど複数環境の運用などで運用にかかる負荷が増加しております。しかし従来の運用管理ツールだけで解決するのは難しくなってきています。そんな中、運用の高度化・効率化のため、アプリケーションパフォーマンス管理、アプリケーション・リソース管理、そしてAIの技術を採用した「AIOps」製品が注目を集めています。 弊社はIBMのAIOps製品の拡販に注力しており、かつ、私たち自身で製品のことを知りパートナー様に商材をご紹介したいと考えていることより、IBMのAIOps製品を組み合わせて社内検証を実施しましたので、今回から3回にわけてご紹介したいと思います。 まず1回目はInstanaとTurbonomicを組み合わせてリソース最適化の検証を実施しましたので、その内容と結果、苦労した点などをご紹介します。 目次 InstanaとTurbonomicの概要と連携させることで可能になること 検証内容 検証結果 苦労した点 さいごに お問い合わせ InstanaとTurbonomicの概要と連携させることで可能になること Instanaは、アプリケーションモニタリングの分野で高い評価を得ているツールです。 アプリケーション呼び出し時のコールリスエストのトレーシングやCPU、メモリといったメトリクス情報収集を通じて、アプリケーション・インフラの状況をリアルタイムで可視化します。特に自動化された監視設定や障害発生した際の関連情報を分析し一目で原因を特定できます。 Turbonomicは、インフラリソースおよびアプリケーションの効率的な配置・利用を最適化するプラットフォームです。 リソースの過剰利用や不足をリアルタイムで把握し、必要な改善アクションを推奨または自動実行します。 詳細な機能についてはそれぞれBLOGで紹介しておりますので下記をご確認ください。 Instana Turbonomic 連携させることで得られる効果 InstanaとTurbonomicを連携させることで、以下の効果が得られます。 リアルタイムモニタリングの強化: Instanaを通して詳細なリソース使用状況を把握し、Turbonomicがそれを基に適切なリソース割当を推奨。 自動リソース最適化: 必要に応じてTurbonomicが推奨するアクションをInstanaから直接実行可能。 アプリケーションとインフラの統合可視化: 両製品の連携により、アプリケーションのパフォーマンスだけでなく、それを支えるインフラ(仮想マシン、コンテナ、クラウド)の状態までを統合的に可視化できます。 検証内容 今回の検証では、以下の環境・シナリオを設定しました。 環境構成 Turbonomic: IBM Cloudのベアメタルサーバ(Hyper-V)上にデプロイ。 本環境で使用するAWSアカウントをターゲット追加。 Instana: SaaS形式で利用。 監視対象: AWS EC2インスタンスA(instana03、インスタンスタイプ:m7a.medium)にInstana agent導入。 アプリケーション: AWS EC2インスタンスAにサンプルwebアプリケーションのRobot Shopを導入。 Instana上ではInstana03_robot-shopとして登録。 【参照】GitHub 負荷ツール: AWS EC2インスタンスBにJMeterを導入。構成については下記の通り。 検証内容 EC2インスタンスBのJmeterからEC2インスタンスA上のアプリケーションへ同時多発webアクセスを行いリソース使用率の負荷をかける。 負荷は下記図の通りスレッド数5000、ramp-up期間は1秒、持続時間は3600で設定 Turbonomicがリソース使用率を検知し、インスタンスタイプ変更のアクションが推奨されることを確認する。 Instanaで推奨されるアクションを実行し、実際にEC2インスタンスAのリソースが拡張されるかを確認をする。 インスタンスタイプ変更後も同量の負荷をかけ続けリソース使用率が問題ないか確認する。 検証結果 検証開始前のTurbonomicの状況です。 左側の仮想マシンの箇所は緑となっておりインスタンスタイプは赤枠で囲われているm7a.mediumとなっています。 また、Instana上ではインスタンスタイプ変更のアクションは表示されていません。 この状態から負荷を掛けていきます。 負荷を掛けていくことで、下記図の通り、検証開始前は安定したリソース使用率でしたが、負荷をかけることで仮想CPUや仮想メモリへの負荷を確認できます。 また、点線で囲んでいる部分についてはTurbonomicが推測する今後のリソース使用率になります。左側の仮想マシンという部分についても赤くなっております。 Turbonomicが不足するリソースを検出し、最適なインスタンスへの変更を推奨しています。 Turbonomicで推奨されたアクションがInstanaで推奨アクションとして表示されます。 Instana上でアクションを実行します。 実行後Turbonomic上でインスタンスタイプが変更されていることを確認できます。 また、インスタンスタイプ変更後も負荷を掛け続けた結果、インスタンスタイプ変更後にリソース使用率が低下していることを確認できました。 ※★のタイミングでインスタンスタイプを変更しています。 この結果、リソースの過不足を迅速に解消し、安定したアプリケーション運用が可能であることを確認しました。 検証の結果以下を確認することができました。 負荷シミュレーション時、EC2インスタンスAのCPU使用率やメモリ使用率の上昇を可視化。 InstanaにTurbonomicの推奨アクションが表示され、Instana上でアクションを実行することでインスタンスタイプが変更され、負荷が下がる過程を可視化。 インスタンスタイプ変更後も同量の負荷をかけつづけリソース使用率が問題ないことを確認。 苦労した点 今回の検証を進める中で以下のような課題に直面しました。 TurbonomicがデプロイされているISOイメージから仮想サーバを作成する方式なのですが、Hyper-V用ISOイメージがなく、VMware用のISOイメージから作成しようとしても失敗したためIBMサポートへ問い合わせを行いました。 仮想サーバをデプロイしたあとTurbonomicコンソールへアクセスしようとしたところ、Hyper-V内のネットワーク設定が誤っておりインターネットからアクセスができませんでした。 TurbonomicからAWSアカウントのターゲット追加する際にDNS設定が正しく設定されていなかったため、正常に追加登録が完了しませんでした。 InstanaとTurbonomicをスムーズに連携させるための設定確認とチューニングに時間を要しました。特にInstana側からTurbonomic側への設定追加の際に、設定項目がドキュメントからは読み取れず、設定内容が間違っていたためサポートへ問い合わせを行い解決しました。 負荷テストを行う際に最初はWebアプリケーションに付随するスクリプトで実施していましたが、インスタンスタイプ変更に伴う再起動が発生するためJMeterで実行するワークロード設計に工夫が必要でした。 Turbonomic上で推奨アクションがあらかじめ表示されている場合、負荷をかけることで推奨アクションが更新されると想定していましたが、更新されなかったため想定していた挙動となりませんでした。 インスタンスAに負荷を与えても推奨アクションが表示されなかったため、ポリシーの設定変更に時間を要した。特に観測期間を短くし、積極性をあげることで短い期間内での負荷に敏感になるように設定しました。 観測期間の最低値が7日間のため、一度推奨アクションが表示されるまで負荷を掛け続けインスタンスタイプを変更しないでおくと、推奨アクションが継続して表示されてしまい、推奨アクションが表示されなくなるまで時間がかかってしまいました。 さいごに InstanaとTurbonomicを連携させ、AWS EC2インスタンスのリソース最適化の自動化を検証しました。 今回の検証ではTurbonomicをオンプレミスに導入しましたが、SaaSでの提供もありますので今回の検証で苦労したTurbonomicの構築といった手間を省略することも可能です。 InstanaとTurbonomicを連携させることで、操作時にコンソールを移動せずとも実行は一つのコンソールで実施できるようになります。リソース不足の解消やアプリケーション性能の安定化とともに、現場での手動作業を削減できによる運用の高度化・効率化が期待されます。 お問い合わせ エヌアイシー・パートナーズ株式会社 E-mail:voice_partners@niandc.co.jp   .bigger { font-size: larger; } .highlighter { background: linear-gradient(transparent 50%, #ffff52 90% 90%, transparent 90%); } .anchor{ display: block; margin-top:-20px; padding-top:40px; } .btn_A{ height:30px; } .btn_A a{ display:block; width:100%; height:100%; text-decoration: none; background:#eb6100; text-align:center; border:1px solid #FFFFFF; color:#FFFFFF; font-size:16px; border-radius:50px; -webkit-border-radius:50px; -moz-border-radius:50px; box-shadow:0px 0px 0px 4px #eb6100; transition: all 0.5s ease; } .btn_A a:hover{ background:#f56500; color:#999999; margin-left:0px; margin-top:0px; box-shadow:0px 0px 0px 4px #f56500; } .table { border-collapse: collapse; border-spacing: 0; width: 100%; } .td { padding: 10px; vertical-align: top; line-height: 1.5; } .tbody tr td:first-child { font-weight: bold; width: 20%; } .tbody tr td:last-child { width: 80%; } .ul { margin: 0 !important; padding: 0 0 0 20px !important; } .ol { margin: 0 !important; padding: 0 0 0 20px !important; } .tr { height: auto; } .table { margin: 0; } *, *:before, *:after { -webkit-box-sizing: inherit; box-sizing: inherit; } .html { -webkit-box-sizing: border-box; box-sizing: border-box; font-size: 62.5%; } .btn, a.btn, button.btn { font-size: 1.6rem; font-weight: 700; line-height: 1.5; position: relative; display: inline-block; padding: 1rem 4rem; cursor: pointer; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; -webkit-transition: all 0.3s; transition: all 0.3s; text-align: center; vertical-align: middle; text-decoration: none; letter-spacing: 0.1em; color: #212529; border-radius: 0.5rem; } a.btn--orange { color: #fff; background-color: #eb6100; border-bottom: 5px solid #b84c00; } a.btn--orange:hover { margin-top: 3px; color: #fff; background: #f56500; border-bottom: 2px solid #b84c00; } a.btn--shadow { -webkit-box-shadow: 0 3px 5px rgba(0, 0, 0, .3); box-shadow: 0 3px 5px rgba(0, 0, 0, .3); }

back to top