استقرار و میزبانی
در این بخش پایانی کتاب، بررسی خواهیم کرد که چگونه برنامه API خود را روی یک سرور production مستقر کرده و آن را در اینترنت در دسترس قرار دهیم.
هر پروژه و تیم پروژه نیازهای فنی و تجاری متفاوتی در زمینه hosting و deployment خواهد داشت، بنابراین ارائه یک رویکرد واحد برای همه در اینجا غیرممکن است.
برای اینکه محتوای این بخش تا حد امکان کاربردی و قابل انتقال باشد، روی میزبانی برنامه روی یک سرور Linux خودمدیریتشده (چیزی که توسط شرکتهای hosting متعددی در سراسر جهان ارائه میشود) و استفاده از ابزارهای استاندارد Linux برای مدیریت پیکربندی سرور و deployment تمرکز خواهیم کرد.
همچنین فرآیند پیکربندی و deployment سرور را تا حد امکان خودکار خواهیم کرد، تا انجام continuous deployments آسان باشد و در آینده در صورت نیاز امکان replicate کردن سرور وجود داشته باشد.
اگر قصد دارید همراه با ما پیش بروید، در این کتاب از DigitalOcean به عنوان ارائهدهنده hosting استفاده خواهیم کرد. DigitalOcean رایگان نیست، اما ارزش خوبی دارد و هزینه راهاندازی یک سرور از ۴ دلار آمریکا در ماه شروع میشود. اگر نمیخواهید از DigitalOcean استفاده کنید، باید بتوانید تقریباً همین رویکردی که در اینجا توضیح میدهیم را با هر ارائهدهنده hosting دیگر Linux دنبال کنید.
از نظر infrastructure و architecture، همه چیز را روی یک سرور Ubuntu Linux واحد اجرا خواهیم کرد. stack ما شامل یک دیتابیس PostgreSQL و فایل binary قابل اجرای Greenlight API خواهد بود، که تقریباً به همان شکلی که تا اینجا در این کتاب دیدهایم عمل میکند. اما علاوه بر این، Caddy را به عنوان یک reverse proxy در مقابل Greenlight API نیز اجرا خواهیم کرد.
استفاده از Caddy چندین مزیت دارد. این ابزار به طور خودکار اتصالات HTTPS را برای ما مدیریت و خاتمه میدهد — از جمله تولید و مدیریت خودکار گواهیهای TLS از طریق Let's Encrypt و ZeroSSL — و همچنین میتوانیم از Caddy برای محدود کردن آسان دسترسی اینترنت به metrics endpoint خود استفاده کنیم.
در این بخش یاد خواهید گرفت که چگونه:
یک سرور Ubuntu Linux که روی DigitalOcean اجرا میشود را برای میزبانی برنامه خود راهاندازی کنید.
پیکربندی سرور را خودکار کنید — از جمله ایجاد حسابهای کاربری، پیکربندی firewall و نصب نرمافزارهای لازم.
فرآیند بهروزرسانی برنامه و deploy کردن تغییرات روی سرور را خودکار کنید.
چگونه برنامه خود را به عنوان یک سرویس background با استفاده از systemd و به عنوان یک کاربر non-root اجرا کنید.
از Caddy به عنوان یک reverse proxy در مقابل برنامه خود استفاده کنید تا به طور خودکار گواهیهای TLS را مدیریت کرده و اتصالات HTTPS را مدیریت کند.