PlusMagi's Blog By Pitt Phunsanit Cloud Computing,Database 🛠ïļ Ops: āļœāļđāđ‰āļžāļīāļ—āļąāļāļĐāđŒāļĢāļ°āļšāļšāļŦāļĨāļąāļ‡āļšāđ‰āļēāļ™

🛠ïļ Ops: āļœāļđāđ‰āļžāļīāļ—āļąāļāļĐāđŒāļĢāļ°āļšāļšāļŦāļĨāļąāļ‡āļšāđ‰āļēāļ™

āđƒāļ™āđ‚āļĨāļāļ‚āļ­āļ‡āļāļēāļĢāļžāļąāļ’āļ™āļēāļ‹āļ­āļŸāļ•āđŒāđāļ§āļĢāđŒāļ—āļĩāđˆāļ‚āļąāļšāđ€āļ„āļĨāļ·āđˆāļ­āļ™āļ”āđ‰āļ§āļĒāļ‚āđ‰āļ­āļĄāļđāļĨ (Data-Driven) āļŦāļąāļ§āđƒāļˆāļŠāļģāļ„āļąāļāļ‚āļ­āļ‡āđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āđ€āļāļ·āļ­āļšāļ—āļąāđ‰āļ‡āļŦāļĄāļ”āļ„āļ·āļ­āļĢāļ°āļšāļšāļˆāļąāļ”āļāļēāļĢāļāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨ (Database Management System) āđ‚āļ”āļĒāđ€āļ‰āļžāļēāļ°āļ­āļĒāđˆāļēāļ‡āļĒāļīāđˆāļ‡āđ€āļĄāļ·āđˆāļ­āđ€āļĢāļēāļžāļđāļ”āļ–āļķāļ‡ PostgreSQL āļ‹āļķāđˆāļ‡āđ€āļ›āđ‡āļ™āļĢāļ°āļšāļšāļ—āļĩāđˆāđ„āļ”āđ‰āļĢāļąāļšāļ„āļ§āļēāļĄāđ€āļŠāļ·āđˆāļ­āļ–āļ·āļ­āđƒāļ™āļ”āđ‰āļēāļ™āļ„āļ§āļēāļĄāđ€āļŠāļ–āļĩāļĒāļĢāđāļĨāļ°āļ„āļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļ–āđƒāļ™āļāļēāļĢāļ‚āļĒāļēāļĒāļ•āļąāļ§ (Scalability) āđāļ•āđˆāļāļēāļĢāļĄāļĩāļĢāļ°āļšāļšāļāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāļ—āļĢāļ‡āļžāļĨāļąāļ‡āļ­āļĒāđˆāļēāļ‡ PostgreSQL āđ„āļĄāđˆāđ„āļ”āđ‰āđāļ›āļĨāļ§āđˆāļēāļĄāļąāļ™āļˆāļ°āļ—āļģāļ‡āļēāļ™āđ„āļ”āđ‰āļ”āļĩāļ•āļĨāļ­āļ”āđ€āļ§āļĨāļēāđ‚āļ”āļĒāđ„āļĄāđˆāļĄāļĩāļāļēāļĢāļ”āļđāđāļĨ

āđ€āļšāļ·āđ‰āļ­āļ‡āļŦāļĨāļąāļ‡āļ„āļ§āļēāļĄāļĨāļ·āđˆāļ™āđ„āļŦāļĨāļ‚āļ­āļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāļ–āļđāļāđ€āļĢāļĩāļĒāļāđƒāļŠāđ‰āļ•āļĨāļ­āļ” 24 āļŠāļąāđˆāļ§āđ‚āļĄāļ‡ āļ„āļ·āļ­āļāļĨāļļāđˆāļĄāļœāļđāđ‰āđ€āļŠāļĩāđˆāļĒāļ§āļŠāļēāļāļ—āļĩāđˆāđ€āļĢāļĩāļĒāļāļ§āđˆāļē Ops (Operations) āļŦāļĢāļ·āļ­āđƒāļ™āđāļ™āļ§āļ—āļēāļ‡āļ—āļĩāđˆāļ—āļąāļ™āļŠāļĄāļąāļĒāļāļ§āđˆāļēāļ„āļ·āļ­ DevOps Engineer āļŦāļ™āđ‰āļēāļ—āļĩāđˆāļ‚āļ­āļ‡āļžāļ§āļāđ€āļ‚āļēāđ„āļĄāđˆāđƒāļŠāđˆāđāļ„āđˆāļāļēāļĢ ‘āļ‹āđˆāļ­āļĄ’ āđ€āļĄāļ·āđˆāļ­āļĢāļ°āļšāļšāļĨāđˆāļĄāđ€āļ—āđˆāļēāļ™āļąāđ‰āļ™ āđāļ•āđˆāļ„āļ·āļ­āļāļēāļĢ ‘āļ›āđ‰āļ­āļ‡āļāļąāļ™’ āđāļĨāļ° ‘āļ›āļĢāļąāļšāļ›āļĢāļļā āđƒāļŦāđ‰āļĢāļ°āļšāļšāļ—āļģāļ‡āļēāļ™āđ„āļ”āđ‰āļ­āļĒāđˆāļēāļ‡āļĄāļĩāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāļŠāļđāļ‡āļŠāļļāļ”āļ•āļĨāļ­āļ”āđ€āļ§āļĨāļē āđ‚āļ”āļĒāļĄāļĩāđ€āļ›āđ‰āļēāļŦāļĄāļēāļĒāļŦāļĨāļąāļāļ„āļ·āļ­ Reliability, Performance, āđāļĨāļ° Security

⚙ïļ āļšāļ—āļšāļēāļ—āļ‚āļ­āļ‡ Ops āđƒāļ™āļāļēāļĢāļ”āļđāđāļĨ PostgreSQL: āļˆāļēāļāļāļēāļĢāļ—āļģāļ‡āļēāļ™āļŠāļđāđˆāļāļēāļĢāļ›āļĢāļąāļšāļ›āļĢāļļāļ‡āļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļž

āļŠāļģāļŦāļĢāļąāļš PostgreSQL, Ops āđ„āļĄāđˆāđ„āļ”āđ‰āļˆāļģāļāļąāļ”āđāļ„āđˆāļāļēāļĢāđ€āļāđ‰āļēāļŦāļ™āđ‰āļēāļˆāļ­ Server āđ€āļ—āđˆāļēāļ™āļąāđ‰āļ™ āđāļ•āđˆāļ„āļ·āļ­āļāļēāļĢāđ€āļ›āđ‡āļ™āļŠāļ–āļēāļ›āļ™āļīāļāļ—āļĩāđˆāļ„āļ­āļĒāļ”āļđāđāļĨāđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨ (Data Infrastructure) āđƒāļŦāđ‰āđāļ‚āđ‡āļ‡āđāļāļĢāđˆāļ‡āļ­āļĒāļđāđˆāđ€āļŠāļĄāļ­ āļŦāļ™āđ‰āļēāļ—āļĩāđˆāļŦāļĨāļąāļāļ—āļĩāđˆ Ops āļ•āđ‰āļ­āļ‡āļĢāļąāļšāļœāļīāļ”āļŠāļ­āļšāļĄāļĩāļ”āļąāļ‡āļ™āļĩāđ‰:

1. Performance Tuning āđāļĨāļ° Optimization

āđ€āļĄāļ·āđˆāļ­āđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āđ€āļ•āļīāļšāđ‚āļ•āļ‚āļķāđ‰āļ™ āļ›āļĢāļīāļĄāļēāļ“ Query āđāļĨāļ°āļ‚āđ‰āļ­āļĄāļđāļĨāļāđ‡āļˆāļ°āđ€āļžāļīāđˆāļĄāļ‚āļķāđ‰āļ™āļ•āļēāļĄ āļ—āļģāđƒāļŦāđ‰āđ€āļāļīāļ”āļ›āļąāļāļŦāļēāļ„āļ­āļ‚āļ§āļ” (Bottleneck) Ops āļ•āđ‰āļ­āļ‡āļ§āļīāđ€āļ„āļĢāļēāļ°āļŦāđŒ Query āļ—āļĩāđˆāļ—āļģāļ‡āļēāļ™āļŠāđ‰āļē (Slow Queries) āđāļĨāļ°āļ›āļĢāļąāļšāļ›āļĢāļļāļ‡āļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļž āđ‚āļ”āļĒāļāļēāļĢāļŠāļĢāđ‰āļēāļ‡ Index āļ—āļĩāđˆāđ€āļŦāļĄāļēāļ°āļŠāļĄ āļŦāļĢāļ·āļ­āļāļēāļĢāļ›āļĢāļąāļšāđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡ Schema āđƒāļŦāđ‰āđ€āļŦāļĄāļēāļ°āļŠāļĄāļāļąāļšāļĢāļđāļ›āđāļšāļšāļāļēāļĢāđ€āļ‚āđ‰āļēāļ–āļķāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨ (Access Pattern) āļ‚āļ­āļ‡āđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™

āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļāļēāļĢāļ›āļĢāļąāļšāļ›āļĢāļļāļ‡ Index:

SQL

CREATE INDEX idx_user_email ON users (email);

2. Backup, Recovery, āđāļĨāļ° Disaster Management

āļ™āļĩāđˆāļ„āļ·āļ­āļ āļēāļĢāļāļīāļˆāļ—āļĩāđˆāļŠāļģāļ„āļąāļāļ—āļĩāđˆāļŠāļļāļ” Ops āļ•āđ‰āļ­āļ‡āļĄāļąāđˆāļ™āđƒāļˆāļ§āđˆāļēāļ‚āđ‰āļ­āļĄāļđāļĨāļ‚āļ­āļ‡ PostgreSQL āļŠāļēāļĄāļēāļĢāļ–āļāļđāđ‰āļ„āļ·āļ™āđ„āļ”āđ‰āđ€āļŠāļĄāļ­ āđ„āļĄāđˆāļ§āđˆāļēāļˆāļ°āđ€āļāļīāļ”āđ€āļŦāļ•āļļāļāļēāļĢāļ“āđŒāđ„āļŸāđ„āļŦāļĄāđ‰, āļāļēāļĢāđāļŪāļ, āļŦāļĢāļ·āļ­āļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”āļ‚āļ­āļ‡āļĄāļ™āļļāļĐāļĒāđŒ āļāļēāļĢāđƒāļŠāđ‰āđ€āļ—āļ„āļ™āļīāļ„āđ€āļŠāđˆāļ™ Point-in-Time Recovery (PITR) āđāļĨāļ°āļāļēāļĢāļ—āļģ Replication (āđ€āļŠāđˆāļ™ Streaming Replication) āđ€āļ›āđ‡āļ™āļŠāļīāđˆāļ‡āļ—āļĩāđˆāļ•āđ‰āļ­āļ‡āļ§āļēāļ‡āđāļœāļ™āļ­āļĒāđˆāļēāļ‡āļĢāļąāļ”āļāļļāļĄ

3. Schema Migration āđāļĨāļ° Version Control

āđ€āļĄāļ·āđˆāļ­ Developer āļ•āđ‰āļ­āļ‡āļāļēāļĢāđ€āļžāļīāđˆāļĄāļŸāļĩāđ€āļˆāļ­āļĢāđŒāđƒāļŦāļĄāđˆ āļāđ‡āļĒāđˆāļ­āļĄāļŦāļĄāļēāļĒāļ–āļķāļ‡āļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļ•āļēāļĢāļēāļ‡ (Schema Change) Ops āļ•āđ‰āļ­āļ‡āđ€āļ‚āđ‰āļēāļĄāļēāļ„āļ§āļšāļ„āļļāļĄāļāļĢāļ°āļšāļ§āļ™āļāļēāļĢāļ™āļĩāđ‰ āđ€āļžāļ·āđˆāļ­āđƒāļŦāđ‰āļĄāļąāđˆāļ™āđƒāļˆāļ§āđˆāļēāļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡āļ™āļąāđ‰āļ™āļˆāļ°āļ–āļđāļāļ™āļģāđ„āļ›āđƒāļŠāđ‰āļāļąāļš Production Environment āļ­āļĒāđˆāļēāļ‡āļ›āļĨāļ­āļ”āļ āļąāļĒāđāļĨāļ°āđ„āļĄāđˆāļ—āļģāđƒāļŦāđ‰āļĢāļ°āļšāļšāļĨāđˆāļĄ

āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļ•āļēāļĢāļēāļ‡āđƒāļŦāļĄāđˆ:

SQL

CREATE TABLE products (id SERIAL PRIMARY KEY, name VARCHAR(255), price NUMERIC);

🚀 āļšāļ—āļŠāļĢāļļāļ›: Ops āļ„āļ·āļ­āļœāļđāđ‰āļ‚āļąāļšāđ€āļ„āļĨāļ·āđˆāļ­āļ™āļ„āļ§āļēāļĄāļĒāļąāđˆāļ‡āļĒāļ·āļ™āļ‚āļ­āļ‡āļ‚āđ‰āļ­āļĄāļđāļĨ

āļāļĨāđˆāļēāļ§āđ‚āļ”āļĒāļŠāļĢāļļāļ› Ops āđƒāļ™āļĒāļļāļ„āļ‚āļ­āļ‡ DevOps āļ„āļ·āļ­āļāļēāļĢāļœāļŠāļēāļ™āļĢāļ§āļĄāļĢāļ°āļŦāļ§āđˆāļēāļ‡āļ„āļ§āļēāļĄāđ€āļ‚āđ‰āļēāđƒāļˆāđƒāļ™āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™ (Infrastructure) āđāļĨāļ°āļ„āļ§āļēāļĄāđ€āļ‚āđ‰āļēāđƒāļˆāđƒāļ™āđ‚āļ„āđ‰āļ” (Code) āđ€āļžāļ·āđˆāļ­āđƒāļŦāđ‰āļĢāļ°āļšāļš PostgreSQL āđ„āļĄāđˆāđ€āļžāļĩāļĒāļ‡āđāļ•āđˆ ‘āļ—āļģāļ‡āļēāļ™āđ„āļ”āđ‰’ āđāļ•āđˆāļ•āđ‰āļ­āļ‡ ‘āļ—āļģāļ‡āļēāļ™āđ„āļ”āđ‰āļ­āļĒāđˆāļēāļ‡āļĒāļ­āļ”āđ€āļĒāļĩāđˆāļĒāļĄ’ āļ­āļĒāđˆāļēāļ‡āļ•āđˆāļ­āđ€āļ™āļ·āđˆāļ­āļ‡ āļāļēāļĢāļ”āļđāđāļĨāļĢāļ°āļšāļšāļŦāļĨāļąāļ‡āļšāđ‰āļēāļ™āļˆāļķāļ‡āđ„āļĄāđˆāđƒāļŠāđˆāđāļ„āđˆāļāļēāļĢāļ‹āđˆāļ­āļĄāđāļ‹āļĄ āđāļ•āđˆāļ„āļ·āļ­āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļ„āļ§āļēāļĄāļĄāļąāđˆāļ™āđƒāļˆāđƒāļ™āļ„āļ§āļēāļĄāļĒāļąāđˆāļ‡āļĒāļ·āļ™āļ‚āļ­āļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāđāļĨāļ°āļ›āļĢāļ°āļŠāļšāļāļēāļĢāļ“āđŒāļ‚āļ­āļ‡āļœāļđāđ‰āđƒāļŠāđ‰āļ‡āļēāļ™āļ—āļąāđ‰āļ‡āļŦāļĄāļ”