Railway 微服务托管方案
背景
什么是railway?
Railway 是一个为开发者提供即用型基础设施和平台即服务(PaaS)功能的平台,它旨在简化应用程序的部署、管理和扩展。其主要吸引力在于用户可以不必专注于底层服务器和网络配置的复杂性,而是集中精力在构建和维护自己的应用程序上。以下是一些 Railway App 的核心特点:
易用性: Railway 提供了一个直观的界面,允许用户通过几次点击就可以设置和部署项目。这意味着无论是新手还是有经验的开发者都可以快速上手。
即时部署: 通过与Git仓库(如GitHub)的集成,用户可以轻松地从源代码中自动或手动部署应用程序。用户还可以从通用模板和Docker镜像直接部署应用。
可扩展性: Railway 允许应用根据流量和使用情况自动扩展资源,帮助保证应用的性能和稳定性。
多种服务支持: 它支持许多类型的服务,包括web服务器、数据库和其他常见的后端服务,用户可以轻松添加和管理这些服务。
环境变量管理: 在 Railway 上,用户可以安全地存储和管理环境变量,这些变量对于配置应用程序以及保持敏感信息的安全至关重要。
日志和监控: 提供实时日志和监控功能,帮助用户跟踪应用的性能并快速诊断问题。
协作: Railway 支持团队协作,使得多个用户可以共同在项目上工作,分配角色和权限。
价格模式: 提供免费套餐供个人和小型项目使用,同时也提供了更高级别的付费套餐,以满足更大规模和更复杂应用程序的需求。
Railway App 的目标是通过提供这些功能,来降低软件部署的门槛,并使得DevOps更加容易和可访问,从而允许开发者专注于创造而非基础设施管理。
为什么想要使用railway?
从目前使用railway的经验来看,在部署对内应用时,有几个相比于已有代码部署方案显而易见的优点。
Railway 显著降低了 开发人员和运维在部署新应用时的工作量,以及沟通成本。理想条件下,将应用部署在railway上只需要开发人员的介入, 只需要有限的和运维对接(增加DNS记录)。
Railway PaaS的特性使得用户可以在一个界面完成配置管理,部署,日志和监控等等所有功能,而无需依赖传统运维工具箱。
Railway 在定价上更加友好,基于用量的定价模式可以以较低的价格快速部署大量对内应用(avg 1.2$/mon)
目前来看使用railway可能带来的一些不利因素
需要引入额外的身份认证,不容易复用openVPN正向代理以及ldap系统下的权限控制。
代码管理上提出了更多挑战。railway工作流主要基于github代码管理,如果使用gitlab等代码管理中心,则需要额外的代码仓储成本。
如何确定railway和传统部署方案之间的边界?
现阶段我认为以下应用适合采用railway托管方案
该应用不需要严格的ldap权限认证。
该应用负载程度一般,且没有对部署环境有特殊要求(如要求和内网应用的通信是低延迟的)。
该应用需要快速部署,涉及频繁修改。
该应用没有涉及开发协作,或频率有限。
基础架构
通过 nginx-basic-auth 反向代理,避免将业务直接暴露在外网上
Nginx-basic-auth 工作原理