Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
個人ブログ作ってデプロイしました。
Search
Yuxki
April 17, 2024
0
49
個人ブログ作ってデプロイしました。
Yuxki
April 17, 2024
Tweet
Share
More Decks by Yuxki
See All by Yuxki
TypeScriptのクロージャで型エ ラーにハマった話
yuxki
0
18
N+1問題について調べてみた
yuxki
0
17
Conoha VPSでIaCはできる!!!
yuxki
0
110
チームでプロダクトを作る機会でタスクの自走に役立った、個人開発の経験や習慣。
yuxki
0
49
Featured
See All Featured
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Faster Mobile Websites
deanohume
307
31k
Code Review Best Practice
trishagee
69
19k
Optimizing for Happiness
mojombo
379
70k
Facilitating Awesome Meetings
lara
54
6.4k
What's in a price? How to price your products and services
michaelherold
246
12k
Intergalactic Javascript Robots from Outer Space
tanoku
271
27k
Designing for humans not robots
tammielis
253
25k
Thoughts on Productivity
jonyablonski
69
4.7k
The Invisible Side of Design
smashingmag
301
51k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Java REST API Framework Comparison - PWX 2021
mraible
31
8.7k
Transcript
個人ブログ作ってデプロ イしました。 Yukihiro Uejo
自己紹介 New‼ • 自己紹介 ◦ エンジニア職への就職(アプリのバックエンド)を目指して、日々勉強中です。 経 験者と初心者の中間くらいだと思ってます。(実務2年 →個人開発3年) ◦
最近はご縁もあって、ベンチャー企業の手伝いもさせてもらってます。 ▪ PythonとPostgreSQL、時々TypeScript • 使用言語 ◦ Go言語、TypeScript、Python、SQL、AWK、Bash、Vimスクリプト、Scratch
ブログサイトをつくる必要ってある? • 世の中には便利なブログサイトが山ほどある。 • 現代のネット環境において、自分で作る理由はなかなか見つかるものではな い。 • ZennやQiitaで十分。そっちの方がLaprasやFindyで連携できるので、転 職にも有利に働くのではないか?
いやいや、
自分の秘密基地を持ち、カスタマイズし、自分 でデータを持ち、管理することに憧れがあるの です。
あえて具体的な理由をつけるなら • 発信活動を長続きさせるために、まずは愛着を持てるブログをつくろうと 思ったから。 • DBを使った動的ウェブサイトを作ってみたかったから。 • せっかく自分のためのアプリ公開基盤をつくったのだから、それを利用して みたかった。 •
ブログサイトを作る→ブログが書きたくなる→ネタ探しのために勉強する→ス キルが上がる。みたいな流れを期待しているから。
気持ちの後押しもありました • VimCon 2023 Tinyや、YAPC::Hiroshima 2024に参加し、少しでも自 分のスキル向上をしたい!発信活動も欠かさずやっていきたい!と背中を押 された気持ちになりました。
利用した技術 Conoha VPS(OpenStack) Ubuntu Alpine Linux Postgre SQL NextJS Terraform
Packer Next Auth Docker Swarm Docker Nginx
ブログの機能 • ログイン機能(Auth0によるOAuthを利用) • 記事の編集機能(Markdownで書く形式) ◦ タイトル、タグ、サマリー、本文 • 記事の公開・非公開機能 •
プロフィールの編集機能 ◦ プロフィール、Githubアカウント、Xアカウント、自分のホームページ
デモ blog.atoriegg.net
開発工程(DB編) • Postgre SQLと監視用のエージェントが入ったイメージを作成(Packer) ◦ Packerはサーバー仮想化やコンテナ仮想化で使うイメージを作成するツール。 • ConohaVPSにサーバーインスタンスを作成(Terraform) ◦ ConohaVPSはOpenStackを採用しているため、
IaC関連のインフラが利用できる!すご い! • スキーマとロールを設計して設定(手動) • マイグレーションを実行(Drizzle) ◦ DrizzleはTypeScriptのORMライブラリ
開発工程(アプリ編) • コンポーネントのデザイン(Storybook) • 単体テストを作成(Jest) • E2Eテストを作成(Cypress) • Github ActionsでCI・CDのワークフローを作成。
• アプリをプログラム(NextJS+TypeScript+Drizzle+NextAuth) ◦ NextAuthは認証、特にOAuthを楽に実装できるライブラリ。 • Dockerでイメージをビルド • AWSのECRにプッシュ
開発工程(デプロイ編) • ブログのドメインのためにサーバー証明書を更新 ◦ Let's Encryptを使わせてもらいました。 • ローカルネットワークのための、サーバ証明書を発行 ◦ プライベートCAを運用しているので、この工程が必要。
• Docker Swarmの設定ファイルを作成 ◦ 言わずと知れた、Docker内蔵のコンテナオーケストレーションツール ! • Portainrの設定 ◦ PortainerはDockerのコンテナを管理できる OSSのWebアプリケーション。 ◦ Kubernetesのダッシュボードのようなもの!多分。
ブログを開発して • 動的アプリをイチから開発して、イチからデプロイしたことはなかったの で、良い経験になった。 • 自分の作ったアプリで記事を書いて公開するというのは、心地が良い。 • 「不特定多数の人に対するサービスの開発」という目標に一歩近づいた。
反省 • 認証基盤は自作したかった。 ◦ できればGo言語で • 技術的に基礎的なことしかやれなかったのは残念。 ◦ あまり複雑なことはやっていない。 •
もっと面白い要素を加えられればよかった。 ◦ 独自インフラという特徴以外、オリジナリティーのある要素はない。
今後の展開 • OpenAIのAPIを使って、記事から自動的にサマリを作れるようにしたい。 • 画像の添付機能が欲しい。 • DBのバックアップは早めにとれるようにしたい。 • 動作が安定してきたら、ぜひOSSとして公開したい。
最後に • エンジニア職への就職のアドバイス待ってます!