Help us understand the problem. What is going on with this article?

serverless frameworkを使って本格的なAPIサーバーを構築(魅力編)

More than 1 year has passed since last update.

serverless frameworkを使って本格的なAPIサーバーを構築(魅力編)

最近、推しメンの serverless framework の記事の第1弾です。
保守メンテが楽になりつつも、実戦で速攻で構築ができます。

目次

framework_repo.png

こんにちは!某会社のインフラエンジニアをしておりますが、最近は サーバーレス という言葉が流行ってますね。
今回は、serverless frameworkで 「 lambda + APIGateway + DynamoDB 」 の構成でいくつかサービスを作ったので、利点などをまとめていけたらと思います。

サーバーレスとserverless framework

まずサーバーレスとは

サーバーの管理が不要になる

  • サーバーレスアーキテクチャでは、管理するサーバーがないため、サーバー管理から開放され、その分管理コストがかからなくなります。物理的なサーバーの管理はクラウド事業者に一任できるので、故障やパッチ適用の心配をする必要はありません。

また、一般にコード実行サービスは高い可用性を持っているため、オンプレミスサーバーよりも障害耐性が高くなるでしょう。

アプリ開発において便利

  • APIサーバーとして、ハッカソン用に作ったアプリの運用など、ほとんどアクセスがないようなAPIサーバーをずっと放置しておくのは大変お金がかかります。

従来の冗長化構成に比べ安価

  • EC2 + RDS環境を構築したときに、ある程度の規模であれば安価に済ますことができます。

サーバーの脆弱性を突いた攻撃が効かない

  • セキュリティ被害の多くはサーバーOSやミドルウェアの脆弱性を突いた攻撃ですが、公開ネットワーク上にサーバーが無いので、一般的なサーバーの脆弱性を突く攻撃が効きません。

  • Amazonのプラットフォームに脆弱性が無いとは言えませんが、プラットフォーム仕様が公開されていないので脆弱性を探すことが難しく、一般的なサーバーOSより脆弱性被害の可能性は少ないと考えられます。

サーバーが落ちることがない

  • サーバーが無いのでサーバーダウンの概念がありません。

  • 厳密にはAmazonがダウンすれば共倒れしますが、どのプラットフォームもサービス本体がダウンすれば同じことが言えるので、世界的インフラのAWSと、自社サーバーや一般企業のレンタルサーバーのどちらを信用するか、という話になります。

放置できる

  • セキュリティパッチや、サーバー自体の管理が発生しないためある程度放置できます。

インフラエンジニアがいなくてもスケールする

  • lambdaは最大で3000も同時に実行できます。
  • dynamodbは、キャパシティユニットとオートスケールの設定がかんたんにできます。
  • S3で静的コンテンツを配信したとしても障害確率はかなり低いです。

とにかく安い!

  • サーバーは初期導入コストが高く、必要になるサーバースペックも事前に見積もっておかなければいけません。物理障害時のパーツ交換費用なども必要です。
    クラウドサーバーにしても、起動している時間は料金がかかるため、閑散時などは100%コストを活用できているとはいえません。

  • 一方、コード実行サービスであれば、実際にコードを実行した時間に応じて課金されるため、ムダなコストが発生しません。初期導入コストもかからないため、システムの規模に合わせて柔軟にスケールできます。

保守メンテが楽

  • セキュリテイパッチやサーバー管理などのメンテが不要になります。

APIGateway+DynamoDB+Lambda手動構築の苦悩

image.png

  • serverless framework を使わずに「lambda + APIGateway + DynamoDB」を構築しようとすると、ほぼボタン操作で設定しないといけないです。
  • どのステージをデプロイするのか、設定した項目・手順を忘れた。もとに戻したい、引き継ぎを行いたいなどいろいろなケースが考えられます

再現性がない

  • これに尽きると思います。
  • 基本的にAPIGatewayの設定などはボタン操作です。もちろんgit管理などできない。 ステージの作成、レスポンスコード、methodの作成など操作を間違えても元に戻すことが難しくなり、実装コスト、人件費、考えるだけで大変なことが多すぎます。(大変だった。)

よって保守性・メンテ・引き継ぎが難しくなっていました。

そこでserverless frameworkの出番です!!

image.png

  • 基本的にAWSコンソールでのボタン操作は不要!!
  • serverless.ymlですべて管理・設定ができる => 設定をgit管理できる
    • aws cloudformationの形式と似ているため、最悪それを真似できます(cloudformationよりかんたん!)
  • コマンド1発でデプロイとロールバックが可能
  • 公式リポジトリにサンプルが沢山!!(こまりません)
  • プラグインもたくさん(ぶっちゃけ使わなくても高機能!!)
  • Expressと組み合わせると、超便利!!!!!(後日記事を書きます)

注意点など

  • iamのadmin権限が必要です。
  • Cloudfrontは設定できません。

次回

参考記事

okamu_
no plan inc. CEO 元フリーランスエンジニア/ iOS / サーバーサイド / 共同創業 / 福岡出身 https://qiita.com/organizations/noplan-inc
https://twitter.com/okamu_ro
admin-guild
「Webサービスの運営に必要なあらゆる知見」を共有できる場として作られた、運営者のためのコミュニティです。
https://admin-guild.slack.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした