All posts
K8s Practice #4: CI/CD Pipeline — GitHub Actions / ECR / ArgoCD
The `myshop-api` built in [#3](/en/posts/k8s-practice-3) still relies on manual steps whenever a new version is released. This post automates that process. GitHub Actions pushes container images to AWS ECR via OIDC without static keys, auto-commits Helm values in the manifest repo so the ArgoCD covered in [Advanced #6](/en/posts/k8s-advanced-6) can detect the change and sync to the cluster, and keeps PR approval gates, dev/prod branching, and canary deployment in one flow.
Python Testing #2 Fixtures: Injecting Setup and Teardown
How to inject test setup code with @pytest.fixture — yield teardown, scope trade-offs, sharing via conftest.py, and built-in fixtures like tmp_path.
RHEL in Practice #6 Wrapping Up the Track: A Reference Architecture
The final post of the RHEL in Practice track. We tie together the nginx web server, PostgreSQL, Podman containers, Cockpit/PCP monitoring, and Ansible automation covered across posts #1 through #5 into a single reference architecture, drawing the full picture of running one small web service on a single box. We also walk through an operations checklist covering persistence, SELinux, firewalld, backups, logging, permissions, and time sync, plus the learning path that leads on to the RHCSA and RHCE certifications.
Why a Site Suddenly Goes Down — Domains, DNS, and Certificates
This post explains, without any code, what domains, DNS, and SSL certificates are and why a site stops when they expire. It covers how typing an address reaches a site, and what happens when you miss a renewal, at a non-developer's level.
Angular in Practice #5: Charts and Data Tables
A dashboard is, in the end, about visualization. We build a data table with sorting, pagination, and search using Angular Material's MatTable, and draw sales and category charts with ng2-charts — turning our dashboard into a screen that actually "shows" something.
AWS Certified Cloud Practitioner (CLF-C02) #7 Domain 3-2 Core Services — Networking and Databases
The second half of Domain 3. Networking (VPC, subnets, Route 53, CloudFront, the four ELB types, VPN, Direct Connect, Global Accelerator), databases (RDS, Aurora, DynamoDB, ElastiCache, Redshift, DocumentDB, Neptune), and ops/management services (CloudWatch, CloudTrail, Trusted Advisor, Systems Manager, CloudFormation). The volume looks heavy, but it compresses into a single workload-to-service mapping table. #8 picks up with Domain 4, Billing and Support.
AWS in Practice #6: Cost Optimization and Dashboards — Wrapping Up the Track
Cost Explorer analysis, Savings Plans / Spot / Graviton, Right Sizing, tag enforcement and cost classification, the FinOps angle — and the wrap-up of 27 posts of AWS track converging into one system.
Django DRF #5: OpenAPI Docs — drf-spectacular
Auto-generate the OpenAPI 3.x schema / Swagger UI / ReDoc for a DRF API with drf-spectacular, and precisely specify responses, errors, and auth via decorators.
K8s Practice #3: DB Integration — RDS / Secrets Manager / External Secrets / Connection Pool
The `myshop-api` exposed in [#2](/en/posts/k8s-practice-2) is still an empty shell with no data store. This post organizes the flow of bringing up RDS PostgreSQL with Terraform, storing the master secret in AWS Secrets Manager, auto-syncing it into a K8s Secret with External Secrets Operator, accessing AWS without static credentials via IRSA, and adding PgBouncer as a connection pool. It also covers automating schema migration as a Job.
Python Testing #1 Getting Started with pytest: Why One assert Is All You Need
How to install pytest and write your first test with a single assert — plus how it differs from unittest, how to read failure output, and the test discovery rules.
RHEL in Practice #5: Automating RHEL with Ansible — Bridging to the RHCE Track
The fifth post in the RHEL in Practice track. We take the hand-driven work from #1〜#4 — nginx, PostgreSQL, Podman, and monitoring — and tie it back together with Ansible, organizing the big picture of reproducing the same result from a single set of code. We cover ansible-core installation, a minimal inventory and ansible.cfg, the idempotency concept, examples of moving hand work into a playbook, and the path to abstraction with rhel-system-roles — leaving the deep syntax to the RHCE track.
Angular in Practice #4: State Management — Cleanup with SignalStore
In the previous post, signal state was wired directly into ProductService. In this post, we move it to @ngrx/signals' SignalStore for cleanup. Step-by-step, we follow the flow of gathering state, derived values, methods, and lifecycle into one place using the four-piece set of withState/withComputed/withMethods/withHooks.