如何组织移动应用程序的后端?

图片

我们在做什么?移动应用程序的用户注册和授权服务

在每个移动开发人员的宠物项目中,迟早会有一段时间需要快速而又无需太多麻烦地为应用程序创建服务器。服务器应该执行什么功能并不重要:是数据存储还是用户注册/授权。

通常,一开始每个人都(最少或最多)沿着阻力最小的路径前进。我们正在寻找一个交钥匙解决方案,并看它能多快地适应我们的需求。

在此阶段,您可以“ google”的第一件事就是Firebase服务,其免费限制足以组织小型移动应用程序的后端。但是在这种情况下,考虑到俄罗斯开发商的确切情况,我们冒着踩踏立法的风险-跨境数据传输和用户个人数据存储。

(联邦法律152“关于个人数据”,第12章,第2章)

使用Firebase 诱惑很大,但是如果我们想确保自己免受各种监管机构的不必要干扰,我们便开始研究其他选择。

下一步是将VDS服务器与某种开源或免费增值解决方案一起使用,其中以现成的“服务即服务”或允许部署类似功能的解决方案为基础。

几年前,我在哈布雷(Habré)上已经在租用的服务器上写了详细的BaasBox设置指南(由于信息过时,该文章已从公众场合删除),并给出了在iOS应用中使用Objective C语言进行各种调用的示例。您租用服务器的最低费用。与他玩了一点之后,决定使用其他解决方案。当时,Parse服务器仅在最近才由Facebook进行开源开发,它没有目前的适配器数量,但其功能已足以满足个人项目和私人客户的应用需求(许多项目仍在进行中)存在并稳定地工作)。

公平地说,值得注意的是,解析服务器已经非常成熟并且正在积极发展。目前,商业祖先中可用的几乎所有功能都已被重新创建。您可以编写自己的钩子,本地化的推送通知,流程管理器,甚至还可以订阅基于套接字更改对象的内容(ParseLiveQuery-有趣的是,我将撰写另一篇有关设置ParseLiveQuery的文章)。

但是当需要实现非标准数据类型时,parse-server恰恰不再引起人们的兴趣,这种情况很难根据系统中定义的类型来工作。这也干扰了这样一个事实,即我不是专业的服务器开发人员,以前我并不重视更有效地部署环境,并且手工制作了许多配置文件,而在每台新服务器上不断重复执行这些操作。正是在这时,人们才意识到盒装解决方案并不能解决所有问题,因此您应该进入为移动应用程序组织服务器的下一个阶段。

最近,我的主要开发语言是Swift。因此,主要是我对编写服务器端代码感兴趣的是他。Swift本身很容易在Unix系统上安装,但不会带来任何明显的优势。从本质上讲,它将类似于具有复杂逻辑的控制台应用程序的开发。重新创建服务器所需的基本方法将花费大量时间。

与许多其他语言一样,服务器端swift具有自己的框架和社区,涉及这些解决方案的开发。

目前,有三种最重要的解决方案可用于开发服务器端swift:

  • 完善
  • Kitura

还有其他选择,但由于其长期停滞的发展和死亡,因此不值得一提。

在文档和支​​持方面,我更喜欢Vapor,但这只是个问题。其他解决方案将接近某人。一种或另一种方式,在很多时候它们是相似的。

当然,在我的示例的整个文章循环中,我将使用Vapor。在此基础上,我们实现了用户注册/授权服务,发送和确认电子邮件以及重置和更改密码的功能。

图片图片
图片图片
在没有实际好处的情况下进行实施值得吗?

可能没有!因此,我们将提供最成熟的服务,您可以利用它来组织用于在服务器上存储用户数据的逻辑。

如果决定是成人的,则需要使用故意的决定。我们必须简化扩展,实现数据验证并提供用户会话的存储,以免强迫他每次输入用户名和密码。

为此我们需要什么?

  • VAPOR 4(是的,仍处于测试阶段,但即将如开发人员所承诺的那样发布)
  • PostgreSQL(有一个出色的适配器可用于该数据库)
  • Nginx的
  • SSL(使用证书关闭我们从客户端到服务器的所有请求)
  • Localhost(在本地考虑开发方法,以免与网络连接并在旅途中正常工作)

好吧,我们将所有这些打包在Docker中以确保相同的工作,而与当前的运行时环境无关。

老实说,我一次对Docker持怀疑态度,但我应该更仔细地研究这项技术。本文的目的不是要解释他的工作,也不是学习如何与他合作(我怀疑我自己仍然必须学习docker的许多有趣功能)。但是,那些不知道它是什么以及如何使用它的人可以通过以下官方链接独立了解Docker:www.docker.com

展望未来,我将为Kitematic应用程序留下一个有用的链接,该应用程序旨在简化Docker容器的工作。 :kitematic.com(不喜欢使用终端的用户必须拥有)。

因此,让我们从在Mac计算机上安装Docker开始:单击

链接hub.docker.com/editions/community/docker-ce-desktop-mac链接并下载Get Docker Desktop For Mac(Stable)。

图片

打开生成的映像,然后不进行任何安装与将应用程序标准复制到程序目录不同。

图片

之后,只需启动应用程序,然后等待直到服务完全初始化即可。

图片图片

如果还没有Docker ID,则应该在hub.docker.com上创建它如果有,则只需登录到应用程序。

图片

就是这样,使用Docker的准备工作已经完成。它仅用于检查当前版本和有关环境的信息。

>码头工人版本
图片

>码头工人信息
图片
这就完成了授权服务开发的准备工作。在下一部分中,我们将看到如何使用各种服务的容器,我们将处理docker-compose来自动化环境的组装并开始编写代码。

PS:个人经验的一些建议。当我们在本地计算机上开发服务时,Docker会分配默认资源供我们使用。如果我们想可视化远程服务器上服务的预期行为,我们应该照顾本地计算机上的资源,并使其尽可能接近服务器的特性。您可以在我们下载的Docker桌面应用程序的设置中执行此操作:

图片

文章作者:
Vitaly Podolsky,HackerU老师

All Articles