[Cloud] 無料クラウドへの旅路―AWSからOCIへの移行/Journey To The Free Cloud - Migrating From AWS To OCI

原文はこちら

われわれは先週Oracle OpenWorldで画期的なお知らせ、すなわち、Oracle Cloudでの完全Free Tierサービスを発表しました。わたしはTwitterでの批判も読みましたし、あなたもまた懐疑的であるというのもわかってますよ。本当にタダのものなんてない、ですよね?でもこのFree Tierは本当なんです。1ヶ月限りでもなければ、1年限りでもありません。ずっと、です。この「Always Free」Tierで提供するサービスの中にはAutonomous Databaseが含まれており、それぞれ1 OCPUと20GBストレージを持ったふたつのインスタンスを使うことができます。これで何ができるかって?たくさんのことができます。近くこれについてブログを書いていくので見逃さないでくださいね。また、それぞれ1/8 OCPUと1GBメモリを備えたふたつのVMも使えます。これらは超高速ってわけではないですけど、信じてください、ある種のアプリケーションには十分なんです。このアイディアについてもそのうちブログに書くつもりです。さらに、トータルで100GBのBlock Storage、10GBのObject Storage、および10GBのArchive Storageといったストレージ、そして1インスタンス、10Mbps帯域のロードバランサーも使えます。他に含まれているのはモニタリング、通知、Eメール配信です。実際のところこれらを利用しない手はないので、もっと詳しく知って、今日登録してしまいましょう。はい、確認のためにクレジットカード情報を登録いただく必要があるんです。いいえ、同意なしにはなんらの課金も発生しません。最近わたしはいくつか他のクラウドプロバイダーの無料サービスに登録したんですが、クレジットカード情報なしに登録させてくれたところはなかったように思います。

ハンズオン

わたしはOracle Cloudの(マーケティングやセールスではなく)デベロッパー・アドボケイトなので、このFree Tierについてまず自分自身で触ってみて、これがやってみる価値があり、他の開発者たちも有用だと感じるだろう、と信じられるようになってからではないとブログに書くことはできません。というわけでわたしは個人用アカウントを登録し、個人ブログをAmazon Web ServicesからOracle CloudのFree Tierに移行してみることにしました。わたしはOracleに加わる前から個人ブログを数年に渡りAWSを使ってホストしてきていまして、それをOracle Cloudに移行する機会がないままだったんですよね。なのでこれはFree Tierを試してみるのにうってつけのプロジェクトだったというわけです。わたしの個人ブログはとても平易なアプリケーションで、データベースとしてはAmazon RDS上のMySQLを使っており、ブログウェアにはカスタムGrailsアプリケーションをApache Tomecat上のWARファイルを、画像ホスティングにはS3を、そしてAmazon SESをEメール配信に使っています。というわけで移行プランは以下のような感じになりました:
  • MySQL RDSからAutonomous DBへのデータベース移行
  • S3からOCI Object Storageへの画像移行
  • SESとOCI email deliveryを交換
  • OCI VMへアプリケーションをデプロイ
The first step was obviously signing up for my free account and launching my new DB instance and VM. I've blogged about the sign up process and launching your first free Autonomous DB instance before, so check that out if you need help.
ひとつめのステップでは無料アカウントに登録して新規DBインスタンスとVMを構築することになります。これについてはすでに登録プロセスと無料のAutonomous DBインスタンスを作成する手順をブログに書いておいたので、必要であれば参照してください。

データベース移行

データベースの移行は移行をガイドしてくれるウィザードがあるSQL Developerを使えば平易で苦労もありません。ただしひとつコツがあって、それはとても寛大なパーミッションを持ったユーザーを使って移行をやることです。そのため、移行を試みる前にこのドキュメントに目を通しておいてください。でも正直言ってドキュメントを全部読む気なんてありませんよね?そんな気はないってわかってます。でも少なくとも移行ユーザーに必要になるパーミッションがなにかを説明するこの章だけは読んでおいてくださいね。
データの移行が済んだら、MySQLではなくOracle DBのアカウントを使うようにするために、Grailsアプリケーションにちょっとした変更を加える必要がありました。Hibernate Dialectや、自動インクリメントKeyではなくシーケンスを使うようにするといった設定変更です。でも特殊なことは何もありません、アプリケーションのバックエンドを変えるときにはいつだってちょっとした調整をしなきゃならないということは想定してますよね。

S3からのオブジェクトの移行

これは比較的容易でした。というのも、わたしはおおよそ100くらいの画像だけしか移行する必要がなかったので、単にS3から手動でダウンロードしてOracle CloudのObject Storageにアップロードしました。もっと複雑な移行になる可能性もありますから、必要であれば このホワイトペーパーをチェックしてください。オブジェクトが配置できたのち、わたしはSQL UPDATEクエリを実行してブログポスト内の既存リンクをOCI Object Storageへのリンクへと置換しました。最後に、新しくアップロードした際にAWSのバケットではなくObject Storageに格納されるよう、S3からOracle Cloudに向き先を変えるようコードを修正する必要がありました。わたしのGrailsアプリケーションはAWS SDKをGrailsプラグイン経由で利用しており、きっとこれをOCI SDKに交換することもできたはずです。でも、OCI Object StorageがAWS SDKから使えるS3互換エンドポイントを提供しているのに、なんだってこんなことをする必要があるでしょう?そのプラグインに関して変更が必要だったのは、エンドポイントといくつかの設定の変更だけで、これはわたしのControllerのコードの3行だけ(以下の4~6行目)で済みました。
BlogController(BlogService blogService, AmazonS3Service amazonS3Service) {
this.blogService = blogService
this.amazonS3Service = amazonS3Service
this.amazonS3Service.client.clientOptions.pathStyleAccess = true
this.amazonS3Service.client.clientOptions.chunkedEncodingDisabled = true
this.amazonS3Service.client.endpoint = "${grailsApplication.config.codes.recursive.aws.s3.namespace}.compat.objectstorage.${grailsApplication.config.codes.recursive.aws.s3.region}.oraclecloud.com"
}
次に、わたしはGrails Mailプラグイン設定をAWS SESサーバーからOCIサーバーに交換しました。これらの設定はコンソールのサイドバーメニューのEmail Deliveryの配下、Email Configurationから見つけました。
ここで設定が表示されます。
設定ページの'Manage SMTP Credentials'をクリックするとユーザー管理セクションに遷移して、アプリケーションで使う認証情報を生成することができます。

アプリケーションのデプロイ

この時点でDBの作成と移行、オブジェクトの移行、および新しい環境(Oracle CloudのDB、オブジェクトストアおよびEメール配信)で動くようにアプリケーションの設定が完了しました。次のステップはアプリケーション自体のデプロイで、これにはコンピュートインスタンスの作成が必要になります。これを始めるため、コンソールダッシュボードに戻って、'Create a VM Instance'をクリックします。
インスタンスに名前を付けて、OSイメージを選択します。
次に、それを使ってインスタンスに接続できるようにしたいSSHの公開鍵をアップロードして'Create'をクリック。
インスタンスが作成されると、そのインスタンスの詳細を見ることができます。パブリックIPアドレスをメモっておきましょう。これはそのマシンにSSH接続('opc'ユーザーと指定したSSH鍵で)をする際に使うことになりまうs。Webトラフィックを受け入れたい場合はイングレスルールをいくつか追加する必要があるので、ここに表示されるサブネットをクリックしましょう。
サブネット詳細ページの左側のメニューから、'Security Lists'をクリックしてデフォルトセキュリティリストを選択しましょう。
ポート80およびポート443へのトラフィックを許可するイングレスルールを追加します。
この時点で、わたしはTomcatをインストールしてWARファイルをアップロードし、デプロイしました。わたしの場合にはさらにいくつかSSL証明書のセットアップが必要だったんですが、それでも全体を通じとても平易な移行でした。

まとめ

OracleにはFree Tierがあり、ほんとうにFreeです。使うのに全く費用はかかりません。ずっと。これはすごい、絶対使うべきです。

0 件のコメント:

コメントを投稿