サーバーレスアーキテクチャでアプリケーションは楽になるか? #SecHack365

はじめに

ITサービスに求められる要求は高度かつ激しく変化している.ネットワーク・ルーティング・スイッチング・ファイアウォール・負荷分散・高可用性・障害復旧・TCPUDPのサービス・複数のUNIX・複数のウェブサーバー・キャッシュ・データベース・ストレージインフラ・暗号・アルゴリズム・キャパシティ計画立案やありとあらゆるセキュリティに精通したエンジニアを大量に採用できて全ての技術要素を管理できる場合はいいがそれらは幻想的でどこの組織もITエンジニア不足を嘆いている.しかし,管理できないからといって放置しているというのは完全に技術的負債である.そんな中でクラウドベンダーによるフルマネージドサービスやFaaS,コンテナ技術の登場により多少は緩和されてやりたいことの実現はサーバがすべての面倒を見なくても成立するようになった.

概要

WebサービスのITインフラを設計する上で,WEB,RDBなどのミドルウェアの存在は欠かせないLAMPの構築,運用も重要な要素である.1998年にMichael Kunze氏が提唱したのが始まりであり今より20年も昔でありながら我々はいまだにOSのアップデートに四苦八苦している.20年後の現在ではAWSGCP,Azureのクラウドベンダーによるフルマネージドサービス群などの登場によりクラウドベンダーが”僕が考える最強のインフラ”面倒を見てくれるようになりました.しかし,サービスを開発する側である我々は従来のアーキテクチャとプログラミングモデルにはめようとして多くの失敗をしてます.本ブログではサーバーレスに適したアーキテクチャとプログラミングモデルについての考察をしていきたいと思います.

サーバーレスは人を幸せにするか?

サーバーのネットワーク構成や管理,バッチ処理,メンテナスは死ぬほどめんどくさい.サーバーレスはこれらの煩雑な行為をベンダーに任せることができます(アマチュアは管理コストを安く見積もる傾向にある).また,Event-Drivenなシステムであるためにスケーラビリティや柔軟性が非常に高いです.ほかにもソースコードの量を圧倒的に少なくできて時間を節約できたりサーバーの費用を大幅に下げることも可能です(そのような目的のブログもあるしもちろん,逆説的なブログもある).

巨人の肩に乗れ?

サーバーレスアーキテクトについてのベストプラクティスに関しては所説ありますが.先人たちの失敗にはある程度学ぶものがあります.構築したいものがウェブフレームワークで実現できる場合は積極的に採用すべきです.chaliceaws-serverless-expressなどがあります.

最後に

ここから8月まではシングルページ用のデプロイツールを作ろうと思います.

GitHub - nwiizo/saygodoon: Python Framework Serverless Single Page Apps for AWS

参照

Why The Future Of Software And Apps Is Serverless How to test a Python AWS Lambda function locally with PyCharm Run Configurations
serverless-architectures-aws ミドルウェア実行環境の多様化を考慮したインフラアーキテクチャの一検討 - masayoshiの日記
サーバーレスアーキテクチャという技術分野についての簡単な調査
Hacking Serverless Runtimes Profiling Lambda, Azure, and more.
How to boost your performance with serverless architecture Serverless Architectural Patterns and Best Practices
Serverless Architectural Patterns and Best Practices Youtube