2016/12/20

AWSでWebサービスを構築10 AWSクラスタの運用例

これまでの知識で、Apacheなどが動作するアプリケーションサーバとデータベースを構成することはできる。
冗長化や負荷分散も基本的な構成は説明した。
ドメインやサブドメインの設定も、前回の説明で可能になった。
すでにサービスの開始は可能になった。

ここで、EC2インスタンスの修正とクラスタ更新に関して、実際に運用する際の一例を説明したい。
ただ、特にAWS側で推奨している方法というわけではないため、自分に合うかを判断しながら参考にしてほしい。

2016/12/17

AWSでWebサービスを構築09 Route 53でドメインの登録

これからは運用方法の紹介や他の便利なサービスの説明をしたいが、その上でドメイン・サブドメインなどが使えたら効率はぐんと上がる。
今回はDNSサービスAWS Route 53の使い方を紹介する。

※独自ドメインが必要になるので、お金を覚悟するか、どこからか無料のドメインを借りてくる必要があるので注意!

DNSサービスはドメイン名とIPを関連付けたり、あるいはサブドメインを設定してそれをIPと関連付けたりすることができる。
ドメインは「blogger.com」みたいなもので、サブドメインは「img.blogger.com」のようなドメインより1つ多いもの。
ドメインを1つとっておけば、そのサブドメインは自由に設定できる場合が多い。
Route 53はこのドメイン・サブドメインとIPの関連付けが簡単にできるし、独自ドメインの取得もRoute 53の管理画面から可能となっている。

Route 53のショートカットを選択すると管理画面が開くので、ここから作業をはじめる。

2016/12/15

AWSでWebサービスを構築08 サーバ冗長化とロードバランサの構築

前回までにAPサーバ、DBインスタンスを作成した。
ただ、このままでは一般的なレンタルサーバなどと特に構成が変わらない。
AWSなどのクラウドプラットフォームだと、よりサービスに適した構成をとることが出来る。
今回はインスタンスの構成について、もう少し改善したい。

具体的には、サーバの冗長化と負荷分散機構について説明する。

2016/12/10

AWSでWebサービスを構築06 RDS構築の前知識、前準備

前回はEC2でインスタンスを起動し、AMIの作成まで行った。

先にデータベースを用意した方が良さそうなので、まずはRDSを使ってデータベースを構築する。
が、そのまえに、ちょっとデータベースに関する前知識を説明し、前準備をしたい。

2016/12/09

AWSでWebサービスを構築05 EC2インスタンス起動

前回はサーバ作成の前準備を行った。
今回は実際に仮想サーバを立ち上げる。
具体的には、サーバ起動からSSH接続、Apacheなどのインストールを行なって動作確認、その後にバックアップまで行う。

2016/12/07

AWSでWebサービスを構築04 セキュリティグループの設定

今回はAWS EC2で実際にサーバを作るための前準備を行う。

サーバセキュリティの確保の方法は色々あるかと思うが、AWSでは主にセキュリティグループでフィルタリングを設定する。

AWSでWebサービスを構築03 VPCの構築

準備は整ったので、これから実際にサーバクラスタ構築していく。

大まかな流れとしては、
  1. AWS VPCで仮想ネットワークを構築する。
  2. AWS EC2でサーバを構築する。
  3. AWS RDSでデータベースを構築する。
と進める。

今回はVPCの設定から行う。
※VPCに関しては、AWSに登録したアカウント時からデフォルトのVPCとして作成されているものが既にある。
これとは別に各項目を作成していく。

2016/12/03

AWSでWebサービスを構築02 前準備

前回では、サーバクラスタの前知識と、このシリーズの目標を説明した。
今回から、具体的に1つ1つ構築していく、が、その前にAWSの基本的な設定を行う。

AWSを利用するには、まずはアカウントを作らないと何もできない。
AWS マネジメントコンソールからアカウントを作成する。
あと、AWSは無料枠はあるが有料サービスなので、クレジットカードの登録が必要となる。
クレジット払いが原則だが、交渉すれば別方法の支払いも可能らしい。やったことないから定かじゃないけど。

この辺は特殊なことは何もないので、適当に上のリンクから適当に進めてね。
ログインできたら、設定開始。

2016/12/01

AWSでWebサービスを構築01 前知識

クラウドプラットフォームの出現で、現在ではWebサービスを1人でも構築できる世の中になった。
有名なプラットフォームはそれぞれ特徴があるが、最も柔軟なプラットフォームの1つがAWS(Amazon Web Service)だ。

このシリーズでは、AWS上で一般的なWebサービスを作っていく際の、サーバクラスタの構築過程を説明する。
AWS EC2を使用するが、EC2は仮想サーバを作るサービスなので、これを使うと大抵のことはできるが、その分構築にかかる工数が多くなる。
サービスに内容によってはもっとサクッと作ることができる場合もあるので、あくまでも参考までにしてほしい。

2016/09/03

Raspberry Piドライバ作成 クロスビルド環境構築

Raspberry Piで色々デバイスを制御したところ、USBで接続したほうが扱いやすい例があった。
いくつかの電子部品ではドライバの作成が必要になる例もあったので、色々試行錯誤した内容を説明する。

対象は「RaspbianをインストールしたRaspberry Pi3」とする。

2016/08/28

Raspberry Piでサーボモータ(SG90)を制御する

Raspberry Piの入門が一通り終わったので、何かを制御してみたくなった。

そこで、以前使用したことがある安価なサーボモータの角度制御してみた。
使用したサーボモータはみんな大好き「SG90」。
安価で扱いやすく、これで事足りる場合も多い。

2016/08/25

Raspberry Piのことはじめ - 08 回路設計

今回は実際の設計例をこれまで組んだ簡易回路で説明する。
一通り回路入門的なことは書いたので、「ことはじめ」シリーズはこの回で最終回とする。

Raspberry Piのことはじめ - 07 回路設計の前知識

これまでなんとなく、ここは330Ωだ、とか指定してきたが、必ずそこには意味がある。
今回は回路設計の、かなり基礎的な部分を説明したい。


基本法則


基本法則としては、「オームの法則」と「キルヒホッフの法則」がある。
どちらも中学理科までで習った?と思うので、復習がてら基本部分だけ書く。
(これらの法則の説明だったら、別のサイトを見た方が充実しているかと思うけど)

2016/08/15

2016/08/14

Raspberry Piのことはじめ - 05 プログラム制御(出力)

前回は電源をつけたらLEDがつく、といったシンプルな回路を作ったが、その回路を利用してソフトウェアからLEDのON/OFFを制御してみる。
今回はコマンドとPythonでのプログラム制御を試してみる。

今回必要なもの


前回と同じ。前回の回路を流用するなら、新しく何かを用意する必要はない。
ただRaspbianにアクセスするので、リモートで接続する方法を思い出してね。

Raspberry Piのことはじめ - 04 回路入門


これまで開発環境開発環境...といってきたが、開発環境とはなんだろう?
開発目的があっての開発環境なので、ちょっと整理する。

Raspberry Piを使用してLinuxサーバのように使いたいのだったら、すでに環境が揃っている。
あとはセキュリティ周りなり、Apache環境なりの整え方を説明すればいいが、正直その辺りは山ほど資料がネットに転がっているだろうから、今回の目的とはしない。
やはりRaspberry Piでは、拡張コネクタピンを使った制御基板としての目的で使用する人が多いのではないだろうか。

ということで、この「ことはじめ」は拡張コネクタの簡単な使用方法と、実際の基板例などを最終目的とする。
(それ以上はまた別のタイトルにしたい)

2016/08/04

Raspberry Piのことはじめ - 03 OSバックアップ

今度こそ開発環境を・・・と思ったが、これまでに作った環境がベースとなり、これ以上は用途によって異なる改造をして、サーバにしたり制御基板にできたらいいな、と思った。
現状をバックアップして、これから何か作るたびにこのベースをSDカードに復元して、ホスト名を変えれば効率が良さそう。

そういうわけで、今回はOSのバックアップ、および復元をまとめた。
(今回は短め)

2016/08/01

Raspberry Piのことはじめ - 02 開発のためのリモート環境整備

Raspberry PiにOSをインストールしてふと思ったのが、実際にこれをどう操作していこうか、ということだった。
とりあえずミニキーボード、ミニマウス、ミニHDMIディスプレイを手に入れてインストール作業していたが思ったより面倒。
モニタが小さいと運びやすいが見づらいし、キーボード、マウスも普段使いでないものなので、実装にストレスがかかる。

これから開発を行うにあたって、どのような環境で開発を行うかを選択する必要がある。
用途によって幾つかのケースが考えられるので、今回はこれをまとめた。

2016/07/23

Raspberry Piのことはじめ - 01 Raspbianインストール

君はRaspberry Piという基盤を知っているか?


Raspberry Pieを直訳するとキイチゴのパイ...ジ⚪︎リに出てきそうな料理だ...

Raspberry Piとは電子工作界隈で人気を博している基盤で、
  • ちいさい
  • なのにHDMIが映像出力になっている
  • ARMコアが乗ってる
  • SDカードをディスクドライブとして使用する
  • LANとかBluetoothなど通信モジュールが豊富
といった特徴がある。

人気なんだけど全然触ってこなくて、まぁものすごく出遅れていたが
触る機会ができたので、動かし方をまとめてみることにした。

ちなみに対象はRaspberry Pi 3 Model B。Bってなんだ。


2016/07/22

Service

Androidでは、よくあるViewが表示されるアプリとは別に、Serviceというバックグラウンド処理を行うクラスを実装することができる。
Serviceはバックグラウンド処理を行うのに都合がいい機能が幾つか実装されている。


前置き


  1. Activityがバックグラウンドに移動しても、Serviceは動き続ける。
  2. Activityが終了した場合でも動き続けるような設定ができる。(正確には、Activity終了時にServiceを立ち上げ直しているもよう)
  3. Serviceの立ち上げ方は2種類あり、それによって挙動やライフサイクル、Activityとの通信方法などが異なる。
  4. ServiceはActivityなどと別のプロセスではない
  5. Serviceは多重起動はできない。

4に関しては、Activityと同じスコープで実装・ビルドしている以上、そうなのかなと思ったが、
よく考えたら、Activityが落ちた後もずっと動いてるし、その後またActivityが立ち上がったらどうなるの...?と思った。

Serviceはライフサイクルが特殊なので、いろいろテストをして確認した結果も踏まえて、使用方法をまとめた。


2016/07/17

Android Backup Service

詳しい話はここに書いてあるけど英語だし。。。
なので、実装した上での経験も含めてまとめた。


前置き

Android Backup ServiceはAndroid2.2から実装された、Androidアプリのデータバックアップの仕組み。
BackupManagerというクラスを通して、バックアップを行う。
主な特徴は下記の通り。

  1. バックアップ内容は、保存したい内容をbyte列にしてwriteする方法と、ファイルやSharedPreferencesを指定する方法がある。
  2. ファイルに関しては、基本的にはContext.getFilesDir()のパス内に保存されているデータを指定できる。(それ以外にもできるという記事がよそにありますが)
  3. バックアップのタイミングは指定できない。(OSが定期的にバックアップを行う)
    できるのは対象データが変更されたのを通知することのみ。
  4. リストアもタイミングを指定できないとあるが、実際に実装してみたらアプリ側でリクエストしたらすぐに処理が始まるっぽい。
  5. 画像やテキストデータでもバックアップ可能。データ容量制限は記載がない。
  6. 最終的にバックアップを行うかどうかはユーザがAndroid端末の設定アプリから設定できる。

3のため、ゲームのセーブデータ共有などには向かない。(セーブしたタイミングでバックアップが走るとは限らないので)
4は実際に試したところ、そんな感じの挙動だった。

2016/07/11

Androidのアプリデータバックアップ事情

アプリを製作していると、たまにデータの引き継ぎの話になる。
iOSでは、ある程度はiTunesのバックアップでデータまで引き継ぎできるので、まーこれでいいか、となるが、Androidではどうなのか?

アプリデータバックアップに関しては
  1. バックアップアプリを使用する。
  2. Android Backup Serviceに対応するよう実装する。
  3. 独自にサーバとクライアントモジュールを実装する。
などがあげられる。
(公開アプリ前提なので、Root化が必要な方法は除外)

2016/07/06

起動

何度目かのブログをはじめて、何度目かのAboutページを作ったけど、コンテンツもないのに著作権を明示して若干の気恥ずかしさを感じますね。