サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
災害への備え
blog.mmmcorp.co.jp
こんにちは、DWS 2人目の大島です。 最近パスキー認証が流行りに流行っていますね。 実は AWS の ID 管理サービスである Amazon Cognito でもパスキー認証への対応を始めています。 公式でパスワードレス認証に関する Cognito のライブラリを作成してくれていたり、ハンズオンも用意がされています。 そこで今回はこのハンズオンをベースに、 実際にリソースをデプロイしてみて、Cognito でパスキー認証を実装すると、裏側ではどのようなことが起こっているのか、を見てきたいと思います。 パスキー認証の動作と、Cognito での実装の両面を理解できる記事になれば幸いです。 一度ハンズオンを実施していただいた上で、 裏の仕組みの理解を深めるような形で読んでいただくことをお勧めします。
概要 今回は、内山が担当しているプロジェクトで実施した CircleCI のデプロイフローの改善策について、ご紹介します。 改善前は、以下のような問題点がありました。 デプロイが完了するまでの時間が長い 数年前に設定したものを使いまわしているので、CircleCI の機能を活かせていない これらの問題を解決するために、以下のような改善を行いました。 脱 Docker Compose orb を活用 commands で設定を共通化 この結果、以下のような改善が見られました。 デプロイが完了するまでの時間を短縮した CircleCI の設定ファイルの内容がシンプルになった それぞれの改善策について、ご紹介します。 脱Docker Compose これまで、CircleCI上で Docker Compose を使い、テストやデプロイを行っていました。 この利点としては、手元のPCで実行している
「新しいプロジェクトに参加する度、AWSの知見が増えていく」 DWS(MMM)職員インタビュー Vol.2 MMM社員インタビューの第2弾。今回は、プログラミングスクールを経てMMMに入社し、エンジニアとして活躍している西藤 翔太朗さんに、MMMに入社して変わったことや、エンジニアとしてのキャリアについて聞きました。 聞き手:マーケティング担当者 小学生の頃からプログラミングに触れる ーー最初に、MMMに入社したきっかけを教えていただけますか? 「子供の頃にさかのぼった話になりますが、小学生の頃からプログラミングが好きで、Hot Soup Processor(HSP)という言語を触ったりしていました。無料のレンタルサーバーを借り、フリー配布されていたCGIゲームを設置してみたりとか。とにかく自分でパソコンを使って何かを作ったり、動かしてみるのが楽しかったですね。そういった経験があったので、
なぜSSHを利用してデバッグしたいのか? 以下のような場合はローカル環境でのデバッグではなく、SSHを利用してCircleCIコンテナを直接デバッグすると手間が省けます。 OSやタイムゾーンの違いなど、ローカル環境とCI環境の差異によって生じるエラーなどを再現・解決したい。 CircleCIのビルドコンテナ上の環境変数が正しく設定できているか確認したい。 SSH鍵をバージョン管理システムに追加する まず前準備として、SSH鍵を利用しているバージョン管理システム(GitHubもしくはBitbucket)に追加します。 新しいSSH鍵の作成 ここではGitHubの例を示します。 まず以下のコマンドを任意のターミナルから実行します。 $ ssh-keygen -t ed25519 -C "your_email@example.com" ssh-agentを開始します。 $ eval "$(ssh
はじめに 西藤です。 皆さんはTerraformを使ったAWSインフラの実装をする際のアクセスキーの取り扱いはどのようにしていますか? IAMユーザーを発行して、そのユーザーに紐づくアクセスキーを生成し、それを使ってTerraformのコマンドを実行する という形が多いのではないでしょうか。 もちろん業務ユースであれば、IAMに付与している権限は必要最低限のものに絞って、アクセスキー自体も関係者のみに配布するでしょうし、配布したアクセスキーも一定期間経過したら、アクセスキー自体のローテーションを運用に入れることで、不正使用のリスクをヘッジできます。 ・・・それが、例えば個人使用の時はどうですか? 業務利用じゃないし、Terraformで新しいリソースを作るたびに権限不足に引っ掛かるのがめんどくさいので、Full権限を与えたアクセスキーでじゃんじゃん検証・・・してませんか? もちろん個人の検
競技プログラミングとは 競技プログラミングとは「参加者全員に同一の課題が出題され、より早く与えられた要求を満足するプログラムを正確に記述することを競う」競技です。(wikipediaより引用) 有名な競技プログラミングのサイトとしてはAtCoderやAIZU ONLINE JUDGE、海外ではTopcoderなどがあります。 創設するきっかけ 弊社メンバーとペアプロミングを実施していた時のことです。 実装量自体は多くないものの、処理がやや複雑な箇所がありました。 この箇所は例えると競技プログラミングの問題のような処理内容でした。 そこから競技プログラミングの話題となり、以下のような話で盛り上がりました。 「元々競技プログラミングに興味はあるが、継続して続けられない。」 「以前知り合いにいたレッドコーダー(最上位ランク)の人はすごく実装が早くてコードも綺麗だった。」 そこで、コーディングの品
Notionとは Notionは、オールインワンの情報整理ツールです。 筆者は以下の用途で使い始めました。 GTD (Getting Thing Done) の実践 毎日のTODO管理 個人用プロジェクト用のカンバン管理 このように、さまざまな使い方に対応しているため、他サービスで行っていたプラクティスはすべて、Notionに移行してしまいました。 ついでに個人用のブログもNotionで管理してしまえばよいのではないか、と思いつき、方法を探してみたらNotion Blogというツールを見つけました。 今回は、Notion Blogで個人用のブログを構築する手順をご紹介します。 Notion のサインアップとアプリのインストールなどは、以下のページから行えます。 Notion - The all-in-one workspace for your notes, tasks, wikis, a
最近は体調管理に一番困っているやっさんでございます。 頭痛や肩こり、そして腰痛。 年齢が上がると人には話しにくい悩みが増えていきますね。 さて、今回はAWS Lambdaで GolangのWebフレームワークGinを利用してみました。 Ginとは GinはGo(Golang)で記述されたWebフレームワークです。 パフォーマンスと優れた生産性が必要な場合は、Ginが気に入るはずです。 AWS Lambda × Ginのメリット AWS LambdaでGinを利用することのメリットを考えてみます。 再利用性と可搬性の向上 Ginを利用することで、再利用性と可搬性が向上します。 GinはWebフレームワークですので、サーバーでも動かすことができます。 少しの修正でAWS Lamdaからコンテナアーキテクチャに変更することも可能になります。 フレームワークの恩恵を享受できる GolangではAW
エンジニアの内山です。最近は家に引きこもって、どう森とスプラトゥーンを楽しんでいます。 今回は、Vagrant + Dockerで開発環境を構築する手順をご紹介します。 概要 Docker for Mac はパフォーマンスが悪いため、開発効率に悪くなってしまいます。原因については、以下を参照してください。 https://forums.docker.com/t/file-access-in-mounted-volumes-extremely-slow-cpu-bound/8076/158 Docker自体が遅いわけではないため、Linux上で動かした場合は、問題になりません。 この記事では、Docker for Macの代わりに、Vagrantで動作させているLinux上でDockerを使い、開発環境を構築する方法をご紹介しています。 手順は、以下の3ステップになります。 VirtualB
最近、 WordPress のプラグインを開発している。 開発環境として、 WordPressのDocker公式イメージを利用しているが、いくつか想定していなかった動きがあったので、今回はその内容と対応方法について簡単にまとめておく。 開発環境前提 docker-compose.yml 開発環境の docker-compose.yml は、下記のDockerの公式のドキュメントを参考にしてほぼそのまま使う形で開始した。 【参考URL】 Quickstart: Compose and WordPress ただ、プラグインやテーマを配置するディレクトリについては、開発しやすいようにそれぞれ plugins themes ディレクトリを作り、ボリュームマウントする形で設定をした。 version: '3.1' services: wp: image: wordpress:5.4.0 restar
最近はコンテナオーケストレーションに興味が偏っているやっさんでございます。 弊社ではサーバーレスを積極的に活用しておりまして、 Lambda SDPに認定されております。 本記事では、VPC LambdaとRDS Proxyはサーバーレスの常識を変えるのかを検証しました。 VPC Lambdaの起動速度を検証 VPC Lambdaは2019年9月に東京リージョンで起動速度が改善されました。 Lambda関数が最初に作成された時、Hyperplane ENIを作成するようになります。 VPC Lambdaの起動速度を測ってみます。 Heyという負荷試験ツールで200リクエストを実行します。 結果を見ていただくと分かります通り、レイテンシは大きく改善されています。 Summary: Total: 1.2073 secs Slowest: 0.9351 secs Fastest: 0.0392
弊社でシステム開発案件をお受けする際には、お客様のご要件をヒアリングし、最適なアーキテクチャをご提案させていただいております。 その中で、特に運用コストの削減やスケールのしやすさを目的にサーバーレスアーキテクチャをご提案することも多くあり、これまでサーバーレスアーキテクチャをベースした豊富なシステム開発を経験してきました。 しかし、サーバーレスアーキテクチャのシステム開発の中で、サーバーレスのつらさというのも色々と経験してきた部分もあり、今回はサーバーレスのつらみをご紹介していきたいと思います。なお、弊社はAWSのアドバンスドコンサルティングパートナーであり、AWSのサーバーレスに特化している部分が多いことご了承ください。 ビジネス観点でのつらさ、開発・運用観点でのつらさ、の2本立てで書いてみます。 1. ビジネス観点でのつらさ 運用コストの見積もりにくさ これまでの経験上、サーバーレスア
最近、AWS Lambdaに関する学術論文「Serverless Computing: Economic and Architectural Impact」を読みました。この論文は、AWS Lambdaをテーマにした最初の学術的研究の1つであり、ロンドンのITコンサルタント会社パートナーのGojko Adzic氏と、インペリアル・カレッジ・ロンドンの主任研究員であるRobert Chatley氏によって2017年に発表されたものです。 この論文は、サーバーレス・コンピューティングの経済的な影響・効果に関して非常に示唆に富んでいるため、その重要なポイントを紹介していきます。現時点で論文の発表当時(2017年)と取り巻く技術や背景が変わっている部分はありますが、サーバーレスの効果に関する本質は変わっていません。 なお、サーバーレスを基本からおさえたい方は、ぜひ以下のコラムをご一読ください。 ・
今回はAWS SAMを使用してサーバーレスアプリケーションを構築していきます。 API GatewayをトリガーとしてLambda関数が発火するという非常にシンプルな内容です。そのためサーバーレス開発のイメージを掴みやすいのではないかと思います。 AWS SAMとは AWS SAM(Serverless Application Model)とは、AWS上にサーバーレスアプリケーションを構築することができるフレームワークです。YAMLまたはJSON形式で構成を記述することができます。 コマンドラインツールとしてAWS SAM CLIも提供されており、ローカル環境でもLambda関数を実行することができます。 準備 AWS CLIとAWS SAM CLIを導入します。pipやbrewといった、お好きなパッケージ管理ツールでインストールしてください。 $ pip install awscli $
はじめに こんにちは、エンジニアの内山です。 最近は AWS を使ったサーバレス開発に従事しています。 今回は、サーバレス開発時にやらかしてしまったお話です。 どんなことが起こった? プログラムのバグが原因で、AWS Lambda 上で再起呼び出しの無限ループが起こりました。さらに発生時にはそのことに気づけませんでした。 発生時から 10 日後の月末に、請求額が想定よりも異常に高いという報告を受け、その時点で初めて無限ループが起こっていることが発覚しました。 10 日間 で、AWS Lambda 関数が 28億回__ほど実行されており、付随するサービス(X-Ray/CloudWatch Logsなど)の料金も加わって、__27万円 ほどの料金が発生してしまいました。 経緯 ある Lambda 関数から別の Lambda 関数を非同期で実行する処理を実装していました。実際とは少し違いますが、
こんにちは、下條です。 私は前職でシステム監視のミドルウェアを開発してきました。そして現職ではシステムの開発だけでなく監視にも携わっており、監視と縁が切れない人生を歩んでおります。 そもそも、システムの監視とは、システムが正常稼働してサービスが提供できていることを担保する、またサービス提供ができなくなった場合に迅速にそれを検知して対応するために行うものですが、今回はAWSにおけるサーバーレスシステムにおける監視のコツについて簡単に書いてみます。 サーバーレスシステムにおいては、サーバーがあるシステムと比較して、システム開発後の監視・運用コストは大きく減少します。ただし、だからといって監視が不要になるわけではありません。 なぜサーバーレスが注目されているのか?ゼロから学ぶサーバーレスアーキテクチャ(FaaS)入門 にも書かれているとおり、従来のサーバーありきのシステムとは少々異なったモニタリ
大型台風「ハギビス」が発生し、日本各地で大きな被害が出ました。 幸いにわたくし やっさん が住む地域での大きな被害は免れましたが、 浸水による被害を想定して大切なデータが入っているHDDなどは3階に退避しました。 弊社は毎週金曜にLTを行なっており、その際に「大切なデータ」の バックアップ方法について、�弊社MMMのメンバーによる様々な手法を 知る機会がありました。以下のような手法です。 Google Photoへのアップロード iCloud 追加ストレージの利用 OneDriveの利用 BackBlazeの利用 Amazon Glacierへのアーカイブ 私はMMMのメンバーの中でもレガシーな方で、 複数の外付けHDDとブルーレイディスクに保管しています。 これでは、もし家が完全に潰れるような事態が起きた場合に 全て損失してしまう可能性があります。 できれば地理的に離れた場所に保管したい
最近は、PS4 でリメイクされた「バイオハザード2」をプレイしていて、グラフィックやシステムの進化に感動しています。 エンジニアの内山です。 今回は Go言語の 1.11 から標準で使えるようになった依存モジュール管理ツール Modules の使い方をご紹介します。 Modules の機能 Modules は、依存モジュール管理ツールです。 Go言語 1.11 から標準で使えるようになりました。 以下のような機能を持っています。 依存モジュールの自動検知 依存モジュールのバージョン固定、バージョンアップ検知 依存モジュールの情報は go.mod と go.sum という名前のファイルに記載されます。 これらのファイルを git などでバージョン管理することによって、依存モジュールとそのバージョンを明確にすることができます。 Ruby の Bundler や Node.js の npm のよ
西藤です。 普段仕事をしている上では、MacBook Proを使っています。 ノートPCなので当然なのですが、持ち運び可能でインターネットが使えればどこでも仕事ができるという、現代のワークスタイルには必須の存在となっております。 しかし、そんなMacBookを使っている上で悩ましいのが「ディスプレイの位置」です。 据え置き機のiMacなどであれば、自分のまっすぐの目線の高さにディスプレイがくるので、問題ありません。 一方で、ノートPCを使う上ではどうしても、姿勢が前のめりになってしまい、それが体の負担にもなります。 今回はそれらの姿勢を少しでも自然な形に近づけて、MacBook環境を快適なものにするスタンドを紹介します。 MAJEXTAND MacBookの底面に取り付けることで使用できるノートパソコン用スタンドです。 https://www.majextand.com/ajextand
2019年7月、AWS Systems Manager セッションマネージャーを使用して、クライアントとサーバー間で SSH (Secure Shell) および SCP (Secure Copy) トラフィックをトンネリングすることができるようになった。 セッションマネージャーが SSH と SCP のトンネリングサポートを開始 何が嬉しいのかというと、一番大きいのは、 踏み台サーバーを使用せずに、 Session Manager 経由で対象のEC2に接続できる ということではないだろうか。 実際にやってみた。 前提条件 SSM Agent のバージョン 2.3.672.0 以上 ProxyCommand をサポートする SSH クライアント AWS CLI のバージョン 1.16.12 以上 Session Manager Plugin のバージョン 1.1.22.0 以上 EC2側の
西藤です。 クラウドベースで統合開発環境を構築できるCloud9というAWSのサービスがあります。このサービスを使うことによりローカル環境に手を入れることなく、ブラウザのみでコードの編集から動作確認までひととおりの操作ができる開発環境を構築できます。 ただし、そこに搭載されているエディターは入力補完など各機能は充実していると思いますが、それでも使い慣れたエディターそのものではないので、微妙に操作に慣れないこともありえます。 今回はCloud9上に開発環境を構築しつつ、コードはVisual Studio Code(以下、VS Code)で編集したくなった時の設定をしてみます。 1. Cloud9の設定 こちらについては詳細は割愛いたします。AWSマネジメントコンソールの画面からCloud9環境を作成し、今回は cloud9test という環境を作ったことにします。 Cloud9環境ができ上が
概要 JavaScriptが多くの言語と異なる点のひとつに、イベントループベースの同時実行モデルがあります。これは、JavaScript自体というよりも、ブラウザの仕組みにも関わりがあります。 今回はそれについて書いてみようと思います。 目次 ラインタイム MDNの図を拝借すると、JavaScriptのラインタイムは以下のような要素で構成されています。ひとつずつ説明してゆきます。 ヒープ ヒープはヒープですね。今回のテーマとは少し外れるので省略します。 スタック JavaScriptで処理を呼び出すと、コールスタックが積み上がります。 JavaScriptはシングルスレッドなので、一度にひとつの処理しか実行できません。例えば、以下のように関数を呼び出すような処理を考えます。 function subA() { console.log('A'); } function subB() { co
YouTubeのプレミアム会員に入ってしまい、動画を見る時間がますます増えてしまいました。エンジニアの内山です。 最近の業務では、Go言語を書いています。言語の機能については物足りなさを感じることもありますが、それよりもシンプルさが結構気に入っています。 今回は、Go言語のメタプログラミングについて、ご紹介します。 メタプログラミングとは 開発業務では、似たような単純なプログラムを何度も書く必要がある場合があります。ボイラープレートと呼ばれるようなプログラムです。 そのようなプログラムを自動生成するプログラムを書いて、効率化することはよくあると思います。 この 「プログラムを生成するプログラムを書くこと」 を メタプログラミングと呼びます。 筆者が参加しているプロジェクトでは、実際に以下のようなことを行っています。 AWS LambdaのHandlerとなるプログラムと呼び出し関数を自動生
こんばんみ、下條です。 弊社では何個かのプロジェクトでKPTふりかえりを実施しています。3ヶ月ほど回してきて、かなり機能していると思っています。今のところはだいたい私がファシリテーターを担当しているのですが、今回のブログではKPTふりかえりをファシリテートするにあたって意識していることを書いてみます。 KPTふりかえりの実施方法 KPTふりかえりについての説明はいろいろな場所に情報があると思いますので省略いたします。 現在のところKPTふりかえりは以下の流れで実施しています。 各プロジェクト週一回、毎回30分実施。 ふりかえり前にProblemを洗い出しておいてもらう。 振り返り時にはまずTryのアクションでKeepに移せるものを移す。 Problemに対するTryを考えていく。 Tryを考えるとき精神論的な解決策に頼らない ○○に気をつける。 ○○を意識する。 のようなTryは簡単に思い
西藤です。 仕事のため、趣味のため、公私問わず情報収集するためには、 �ニュースサイトや各サービスのウェブサイトを巡回したり、RSSフィードを専用のアプリで見たり、ソーシャルメディアのタイムラインから情報を得ることも多いと思います。(なかなか追いきれず日々、パンクしそうですが・・・。) YouTubeで情報収集する際の問題点 最近では、YouTubeにて積極的に情報発信をしている企業は少なくなく、ウェブ記事だけではわからない有益な情報を得られることも多々あります。 スマートフォンの大画面化により画面が見やすくなったので、外出時の移動の際にYouTubeを見ることも増えたと思います。 しかし、大画面ゆえに通信量も増えて、YouTubeばかり見ていると月間で使える制限に到達してしまいます。 YouTubeのコンテンツを見つつも、携帯の通信量を節約するために活用できるサービスを紹介します。 Po
内山です。1ヶ月ほど続いた脇腹の痛みがようやく治りかけてきました。 今回は、プログラマの三大美徳について考えてみました。 プログラマの三大美徳とは プログラマの三大美徳とは、以下のような気質を持つことを意味しています。 怠惰(Laziness) 短気(Impatience) 高慢(Hubris) 注意が必要なことは、字面どおりに「こういった性格になりましょう」という意味ではないことです。単なる嫌な人になってしまいます。 言いたいこととしては、以下の通りになるでしょうか。 怠惰 繰り返し単純作業は自動化する 同じようなプログラムは繰り返し書かないようにする(DRY原則) ドキュメントを書いて、同じ説明を繰り返さないようにする 短気 利用者の要求に対して、柔軟に応えられるプログラムを書く(修正を最小限にする) レスポンスが早いプログラムを書く 傲慢 自分の書いたプログラムに責任を持つ 改修しや
西藤です。 静的なコンテンツのみで構成されるサイトを高い耐久性と高速なコンテンツ配信するためには S3 + CloudFront という構成による静的サイトホスティングが可能です。 これによりEC2で立ち上げるサーバーの管理が不要になるので、より安心感を持ってサイト運用ができます。 さらには弊社ブログにおいて、 S3静的ウェブホスティング+CloudFront+Lambda@EdgeでBasic認証をかける の記事にて、その静的サイトホスティングとそのサイトにBasic認証をかける方法が紹介されていますが、 今回はそのS3とCloudFrontの組み合わせでホストされた静的サイトにおいて、「特定のパスにおいてBasic認証をかける」ということを実現してみたいと思います。 これにより「ID・パスワードを知っている人だけがアクセスできる専用ページ」をサイト内の特定のパスにて作ることができます。
本記事は前回私が掲載した記事Java11+Spring Boot+Dockerで作るWebアプリケーションの続きとなります。 前回はWebアプリケーションの雛形を作成してDockerでMySQLコンテナを立ち上げるところまでを構築しましたので、今回はWebアプリケーションからMySQLに接続して取得したデータを画面に表示するところまでを構築したいと思います。 バックエンド側とフロントエンド側のディレクトリ構造およびファイル構成は以下のようになります。 └── src └──main ├── java │ └── com │ └── example │ └── demo │ ├── DemoApplication.java │ ├── domain │ │ └── Customer.java │ ├── repository │ │ └── Custo
それぞれ詳しく見てゆきます。 ジョブ定義 まずはジョブ定義をつくっていきます。Terraformのコードは以下のようになります。 resource "aws_batch_job_definition" "default" { name = "${var.name}" type = "container" container_properties = <<CONTAINER_PROPERTIES { "command": ["ls", "-la"], "image": "busybox", "memory": 1024, "vcpus": 1, "volumes": [ { "host": { "sourcePath": "/tmp" }, "name": "tmp" } ], "environment": [ {"name": "VARNAME", "value": "VARVAL"} ]
次のページ
このページを最初にブックマークしてみませんか?
『デロイト トーマツ ウェブサービス株式会社(DWS)公式ブログ|』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く