Android + 快递 + Mongodb
Android + Express + Mongodb
伙计们
我在这里研究了很多帖子,虽然有些回复验证了我的问题,但仍有一些差距,因此发帖是为了对我的架构进行完整的端到端验证。
我想构建一个 MVP,并希望在实现这一目标的最快路径上获得一些意见,并验证我的技术选择。我可以处理 Javascript、express-node.js、mongo,在 android 编程和中级 java.
方面有初学者水平的经验
我想要一个 android 应用程序,它可以在使用 android 应用程序之前对用户进行身份验证,然后使用户能够管理客户及其元数据,管理与每个客户有关的一些文档,例如在 CRM 应用程序中,将文档发回给客户,并通过支付网关处理客户的付款,并通过短信向客户发送一些通知以执行某些操作 "a" "b" "c".
出于显而易见的原因,我考虑过转向基于云的解决方案而不是本地数据库。这是我正在考虑的技术堆栈。我需要验证这是有道理的并且我没有遗漏任何东西。
客户端编程
- Android Studio 3.0
- ButterKnife:用于生成一些代码的视图绑定库
- 将 java 接口改造为 restful api
- Android 应用程序将与由 node.js
提供支持的 restful api/web 服务通信
服务器
Express 框架 + node.js 服务器
passport.js 用于身份验证
支付网关:条纹
CDN
可能是 amazon cdn 来保存一些文档、模板,然后在 mongodb 中保存该数据的静态 url,并在我的 express 应用程序中使用 node-aws 模块
后端存储
noSQL:Moongose ORM + mongodb
模块:pugm 时刻
在 5-6 个月后的某个时候,我确实希望有一个离线选项。我知道这对 mongodb 来说很棘手,而 couchdb 等可能更好,因为它们有精简版选项。另一个选择是我使用 Google firebase。或者使用一些与 SQLlite 和 mongodb 不对称同步的东西(虽然我不喜欢混合使用 sql 和 nosql)。
同样,速度对我来说非常重要。
请分享您对我所做的技术选择的看法,我是否在正确的轨道上,以及我需要担心的事情。我再次准备好 MVP,很快就希望一些客户试用它,然后在 6-9 个月内推出 GA。
谢谢
肥皂水
我不能在 Android 方面发言,但对于后端是的。
我对后端的理解是你想要以下功能:
- 用户认证
- 通过Stripe
在线支付
- 数据持久化
- 数据同步
- 用户认证
您指定要使用 Passport,但您尚未指定策略。如果您要进行基本的本地身份验证 (username/password),那么您需要确保遵循最佳实践,例如对密码进行哈希处理。
- 通过Stripe
在线支付
Stripe 易于使用且上手速度快。在做出承诺之前,请确保它满足您的所有要求。
- 数据持久化
我强烈建议不要使用 NoSQL 数据库,例如 MongoDB。原因是 NoSQL 用于非关系数据。 SQL 数据库适用于您在上面描述的关系数据:
enable user to manage customers
这将是 1:N 或一对多关系;一个用户可以有很多客户。
将定义更多关系,例如一对一或多对多,这使得 SQL 成为明确的选择。如果您正在寻找速度,那么最好查看 PostgreSQL as a free option otherwise Amazon Aurora。
- 数据同步
这是您需要花费大量时间的事情。您必须决定是要推出自己的解决方案还是使用现有的解决方案,例如 Realm Platform。推出自己的解决方案本身就很复杂。例如,如果用户 A 和用户 B 都可以访问相同的客户 和 同时编辑它们怎么办?移动应用程序将如何响应?还有许多其他情况可能会发生。
除上述之外:
- 我不会让您的 Node.js/Express 应用程序成为传统的单体 application/REST API。获取每个功能并使其成为自己的 "app" 或 微服务 .
- 请注意接受付款时可能必须遵守的任何地方、州、国家等法规。 Stripe 有自己的遵循,您很可能还有另一组需要遵循。
- 考虑 Spring framework, specifically the Spring Boot 项目。
项目没有 "best" 技术堆栈。即使我们对您和项目有足够的了解来提出建议(我们不知道),我们中的 none 有一个 crystal 球来预测未来,以及现在似乎适合的技术以后可能会很不合适。
我可以提供的关于构建 MVP 的最佳建议是:选择可以让您尽可能 quickly/cheaply 验证风险最大的假设的技术堆栈。
事实上,您应该期望构建许多 MVP,如 the MVP is not a single product, but a process.
举几个例子:
对于大多数初创公司来说,最危险的假设是用户首先需要他们的产品。 quickest/cheapest 验证这一点的方法通常是避免构建任何东西(这可能需要几个月),而只是 与潜在客户交谈(这可能需要几个小时)!在这种情况下,"tech stack" 可能只是一张餐巾纸草图或在 Balsamiq 中创建的一些模型。如果用户似乎不感兴趣,您将不得不重新开始设计,但至少您只损失了几个小时而不是几个月。另一方面,如果当您向客户展示您的草图时客户开始垂涎三尺,那么您可以继续进行下一个 MVP。
您做的下一个 MVP 可能是产品的硬编码静态 HTML 原型。您的 "tech stack" 可能是使用 html5up for free HTML5 templates, Bootstrap for styling, and GitHub Pages 进行托管。也许当你在这个阶段向客户要钱时,他们会拒绝你。真可惜,但它只花费你几天的静态原型而不是几个月的编码。另一方面,也许这个阶段会有一些用户签支票,这是很好的验证!
之后,下一个 MVP 可能会在你的 HTML 后面添加一个动态后端。在这种情况下,您最好使用 Heroku or Backend as a Service (BaaS) such as Firebase 等平台即服务 (PaaS),这样您就不必花时间 deploying/managing 基础架构。使用他们提供的任何数据存储,不用担心缩放或花哨的功能。如果您 幸运 足以获得一些牵引力,并且扩展正在成为一个问题,那就是一个很好的问题!
此时,您将更加了解您的问题 space,并将能够决定关系数据库或 NoSQL 数据库是否适合您的数据模型, Node 是否是您的团队最了解的技术,PaaS 或 BaaS 是否仍能满足您的需求,或者您是否需要迁移到基础架构即服务 (IaaS),例如 AWS,等等。即使在这个阶段,您通常仍希望针对快速移动进行优化,因此您通常会选择 (a) 您的团队最了解的技术,以及 (b) 拥有一个构建了开源库的大型社区,您可以将其用于解决您的问题space.
要更详细地了解这些权衡,请查看 Hello, Startup.
的 "Picking a Tech Stack" 章节
伙计们
我在这里研究了很多帖子,虽然有些回复验证了我的问题,但仍有一些差距,因此发帖是为了对我的架构进行完整的端到端验证。
我想构建一个 MVP,并希望在实现这一目标的最快路径上获得一些意见,并验证我的技术选择。我可以处理 Javascript、express-node.js、mongo,在 android 编程和中级 java.
方面有初学者水平的经验我想要一个 android 应用程序,它可以在使用 android 应用程序之前对用户进行身份验证,然后使用户能够管理客户及其元数据,管理与每个客户有关的一些文档,例如在 CRM 应用程序中,将文档发回给客户,并通过支付网关处理客户的付款,并通过短信向客户发送一些通知以执行某些操作 "a" "b" "c".
出于显而易见的原因,我考虑过转向基于云的解决方案而不是本地数据库。这是我正在考虑的技术堆栈。我需要验证这是有道理的并且我没有遗漏任何东西。
客户端编程
- Android Studio 3.0
- ButterKnife:用于生成一些代码的视图绑定库
- 将 java 接口改造为 restful api
- Android 应用程序将与由 node.js 提供支持的 restful api/web 服务通信
服务器
Express 框架 + node.js 服务器 passport.js 用于身份验证 支付网关:条纹
CDN
可能是 amazon cdn 来保存一些文档、模板,然后在 mongodb 中保存该数据的静态 url,并在我的 express 应用程序中使用 node-aws 模块
后端存储
noSQL:Moongose ORM + mongodb 模块:pugm 时刻
在 5-6 个月后的某个时候,我确实希望有一个离线选项。我知道这对 mongodb 来说很棘手,而 couchdb 等可能更好,因为它们有精简版选项。另一个选择是我使用 Google firebase。或者使用一些与 SQLlite 和 mongodb 不对称同步的东西(虽然我不喜欢混合使用 sql 和 nosql)。
同样,速度对我来说非常重要。
请分享您对我所做的技术选择的看法,我是否在正确的轨道上,以及我需要担心的事情。我再次准备好 MVP,很快就希望一些客户试用它,然后在 6-9 个月内推出 GA。
谢谢 肥皂水
我不能在 Android 方面发言,但对于后端是的。
我对后端的理解是你想要以下功能:
- 用户认证
- 通过Stripe 在线支付
- 数据持久化
- 数据同步
- 用户认证
您指定要使用 Passport,但您尚未指定策略。如果您要进行基本的本地身份验证 (username/password),那么您需要确保遵循最佳实践,例如对密码进行哈希处理。
- 通过Stripe 在线支付
Stripe 易于使用且上手速度快。在做出承诺之前,请确保它满足您的所有要求。
- 数据持久化
我强烈建议不要使用 NoSQL 数据库,例如 MongoDB。原因是 NoSQL 用于非关系数据。 SQL 数据库适用于您在上面描述的关系数据:
enable user to manage customers
这将是 1:N 或一对多关系;一个用户可以有很多客户。
将定义更多关系,例如一对一或多对多,这使得 SQL 成为明确的选择。如果您正在寻找速度,那么最好查看 PostgreSQL as a free option otherwise Amazon Aurora。
- 数据同步
这是您需要花费大量时间的事情。您必须决定是要推出自己的解决方案还是使用现有的解决方案,例如 Realm Platform。推出自己的解决方案本身就很复杂。例如,如果用户 A 和用户 B 都可以访问相同的客户 和 同时编辑它们怎么办?移动应用程序将如何响应?还有许多其他情况可能会发生。
除上述之外:
- 我不会让您的 Node.js/Express 应用程序成为传统的单体 application/REST API。获取每个功能并使其成为自己的 "app" 或 微服务 .
- 请注意接受付款时可能必须遵守的任何地方、州、国家等法规。 Stripe 有自己的遵循,您很可能还有另一组需要遵循。
- 考虑 Spring framework, specifically the Spring Boot 项目。
项目没有 "best" 技术堆栈。即使我们对您和项目有足够的了解来提出建议(我们不知道),我们中的 none 有一个 crystal 球来预测未来,以及现在似乎适合的技术以后可能会很不合适。
我可以提供的关于构建 MVP 的最佳建议是:选择可以让您尽可能 quickly/cheaply 验证风险最大的假设的技术堆栈。 事实上,您应该期望构建许多 MVP,如 the MVP is not a single product, but a process.
举几个例子:
对于大多数初创公司来说,最危险的假设是用户首先需要他们的产品。 quickest/cheapest 验证这一点的方法通常是避免构建任何东西(这可能需要几个月),而只是 与潜在客户交谈(这可能需要几个小时)!在这种情况下,"tech stack" 可能只是一张餐巾纸草图或在 Balsamiq 中创建的一些模型。如果用户似乎不感兴趣,您将不得不重新开始设计,但至少您只损失了几个小时而不是几个月。另一方面,如果当您向客户展示您的草图时客户开始垂涎三尺,那么您可以继续进行下一个 MVP。
您做的下一个 MVP 可能是产品的硬编码静态 HTML 原型。您的 "tech stack" 可能是使用 html5up for free HTML5 templates, Bootstrap for styling, and GitHub Pages 进行托管。也许当你在这个阶段向客户要钱时,他们会拒绝你。真可惜,但它只花费你几天的静态原型而不是几个月的编码。另一方面,也许这个阶段会有一些用户签支票,这是很好的验证!
之后,下一个 MVP 可能会在你的 HTML 后面添加一个动态后端。在这种情况下,您最好使用 Heroku or Backend as a Service (BaaS) such as Firebase 等平台即服务 (PaaS),这样您就不必花时间 deploying/managing 基础架构。使用他们提供的任何数据存储,不用担心缩放或花哨的功能。如果您 幸运 足以获得一些牵引力,并且扩展正在成为一个问题,那就是一个很好的问题!
此时,您将更加了解您的问题 space,并将能够决定关系数据库或 NoSQL 数据库是否适合您的数据模型, Node 是否是您的团队最了解的技术,PaaS 或 BaaS 是否仍能满足您的需求,或者您是否需要迁移到基础架构即服务 (IaaS),例如 AWS,等等。即使在这个阶段,您通常仍希望针对快速移动进行优化,因此您通常会选择 (a) 您的团队最了解的技术,以及 (b) 拥有一个构建了开源库的大型社区,您可以将其用于解决您的问题space.
要更详细地了解这些权衡,请查看 Hello, Startup.
的 "Picking a Tech Stack" 章节