作为一名独立开发者,我是如何建立我的科技创业公司的
chenpack 2024-11-05 10:01 675 浏览 0 评论
时间飞逝!以下是作为独立开发者经营一家科技公司近一年后的一些想法、提示和错误。
作为独立开发者一年后的最终产品
我在建造什么??
我有一个想法,我想为健身房和运动员构建一个 Crossfit 训练应用程序。我将它命名为Dreamwod ,并在App Store和Google Play上推出了它。我一直在构建的东西是两个应用程序,一个用于 iOS,一个用于 Android,一个后端 API 和一个公司网页。
本文将讨论技术堆栈、工作方式、我学到了什么以及我犯了哪些错误。
决定技术栈
我对技术堆栈的要求如下。
后端和操作
- 快速的开发和迭代时间。
- 易于在本地运行。
- 易于扩展后端/能够处理高负载。
- 易于部署。
- 尽可能简单。
应用程序开发
- 易于学习(我没有任何 iOS 应用程序开发经验)。
堆栈
后端 - Golang
后端选择的语言是 golang。我想要一些易于学习、快速编译、具有良好性能并且在生产中占用内存和 CPU 占用率低的东西。
应用程序 — Flutter ??
我对 iOS 或 Android 没有太多经验,我想要两个平台的应用程序,所以决定很容易,试试 Flutter 看看它是否有效。
数据库——PostgreSQL
选择数据库时,我有几个可用的选项。我做出决定的假设是,
- 数据将在用户之间共享,即应用程序中的数据不仅由上传它的用户查看和编辑。
- 我会有一些连接和互连的表。
- 我假设我想要支持全文搜索并且不想在 ElasticSearch 或类似的东西上花费时间和精力。
决定使用 Postgres。它通过pg_trgm扩展获得了开箱即用的全文搜索支持。它还对带有postgis扩展的 PostGIS 提供了良好的支持,因此可以轻松计算从用户到健身房的坐标和距离。
云 — GCP ??
我查看了两种托管选项:Google Cloud Platform (GCP) 和 AWS。我选择 GCP 是因为我可以在 Cloud Run 上运行后端 API,并且只需支付处理时间,在开发和测试期间基本上为零。
我一直在使用的其他一些有用的工具,
用于构建容器的Cloud Build 。由于我是唯一的开发人员并且没有构建那么多容器,所以我很容易在他们每天 120 分钟的空闲时间内。
云存储用于用户上传的内容。
Pub/sub用于异步处理,请参阅文章了解我如何使用可以在本地开发以及轻松将其部署到 GCP 的方法。
现在每月的账单大约是 30 美元,其中最大的两个服务负载均衡器是 CDN 18 美元和 Postgres 10 美元。当我获得更多用户并需要使用更大的数据库实例时,这笔费用当然会增加,但对于相当多的用户来说,成本应该仍然相当低。
电子邮件 — Mailgun
那里有很多选择,因为我过去使用过它们,所以我选择了 Mailgun。
付款 - 条纹
我正在应用程序中添加对订阅的支持,使用 Stripe 是一个不错的决定,因为他们有一个订阅门户供用户取消和更改订阅。
公司网页 — Webflow
我选择 webflow 作为公司网页的框架/工具。我一直在寻找一些简单的东西,我可以设置然后忘记。网页可在www.dreamwod.app获得。
工作方式
没有测试
这种说法并不常见,也许稍后会证明这是一个错误,但这里是我没有在后端项目中添加超过 5-10 个测试的主要原因。
- 作为单独的开发人员(后端、前端、QA),我将在实现前端时测试后端代码。
- 添加测试需要很多时间。在构建这个应用程序时,需要进行大量的试验和尝试想法,并为我不会使用的东西添加测试会减慢开发速度。
- 我测试的东西主要是与正则表达式相关的解析,因此与直接测试 API 相比,编写测试更快。
单体而不是微服务
使用一项服务而不是微服务策略总是有点争议,但我只有一个后端 API/服务的原因是这样的。
- 我不想花时间定义合同/API 和解决多服务方法带来的与托管相关的问题。
- 在开始一个新项目时,很难知道在哪里将单个服务拆分为不同的服务。我敢打赌,如果/当需要时,以后这样做会更容易。
- 我的系统没有太多负载,因此我没有任何性能瓶颈问题或后端需要优化的特殊流程。
话虽如此,将代码划分为不同的区域/域并且在代码库中没有“意大利面条代码”当然仍然很好。
我学到了什么?
- “最后 20% 需要 80% 的时间”,这是一句名言,但对我来说确实如此。最后的事情比预期花费的时间要长得多。
- 独自工作意味着我没有任何严格的截止日期,但很难集中精力。我了解到,对我来说,如果我在编码、培训等方面拥有尽可能多的例程,就像在正常的朝九晚五的工作中一样,那效果最好。典型的一天是午餐前的一次编码会议,一个较长的午休时间和健身房课程,然后是下午的编码会议。
在 Tech Stack 中我会做些什么不同的事情?
总的来说,我对技术堆栈非常满意,而且我不会改变很多事情。但我会做不同的一些事情是:
- 我会调查 GraphQL API 是否会比 REST API 更好。
- 我有点担心在全球范围内扩展解决方案可能会很棘手(让我们看看是否需要它)。数据库和服务现在托管在比利时的数据中心,如果有人从美国或巴西使用它,就会有很高的延迟。
从产品的角度来看,我会做些什么不同的事情?
有时,采用“快速简单”的解决方案而不是“正确的解决方案”会更好。
- 一个例子是,当我开始使用 Cloud Run 时,它还是个新事物,它们不支持从 GCP Secrets Manager 中检索机密等某些功能。我花了一些时间来实现一些相关的东西,如果我只是做一些快速简单的 hack,然后等待 Google Cloud 的适当支持会更好。
结论
回顾事情并思考那些没有按计划进行的事情总是很容易,但是思考实际上效果很好的事情同样重要,这就是我写这篇文章的原因之一简短的文章——反思那些行之有效的事情。
如果您正在考虑以独立开发者的身份创办一家公司,请停止思考并去做!其乐无穷!
相关推荐
- RouterOS 端口映射 (远程桌面)
-
一款功能强大的路由器系统-软路由-RouterOS推荐一款路由器系统,头条有很多喜欢使用软路由伙伴可能有很多都不知道RouterOS这个路由系统是,RouterOS是由拉脱维亚MikroTik...
- 神经网络中的编码器 神经网络视频编码
-
神经网络算法-一文搞懂Transformer(总体架构&三种注意力层)本文将从Transformer的本质、Transformer的原理、Transformer的应用三个方面,带您一...
- 必备资料103个WindowsXP运行命令
-
Windows中CMD最全命令行CMD命令:开始->运行(或者Windows+R)->键入cmd或command(在命令行里可以看到系统版本、文件系统版本)CMD命令锦集1.gpedit...
- 固态硬盘无法格式化怎么办
-
Windows中固态硬盘无法格式化怎么办?固态硬盘(简称SSD)是一种数据存储设备,与传统机械硬盘相比,它在许多方面表现得更好。因此,越来越多的用户希望使用固态硬盘,但是当人们购买固态硬盘后准备将其格...
- 手机信令数据分析_手机信令数据分析过程代码
-
清华大学公共管理学院刘志林教授:探索手机信令数据在城市治理中的应用中国发展网讯日前,由中国人民大学首都发展与战略研究院(以下简称“首发院”)主办的首都大讲堂(第7期)暨地方治理工作坊第二期在京举办。...
- python开发ping工具 ipad python开发工具
-
python之ping主机#coding=utf-8frompythonpingimportpingforiinrange,):ip=.+str(i)...
- 云容灾关键技术点简介_云容器技术
-
阿里云发布企业级云灾备解决方案:一键容灾、成本节省%5月日,阿里云对外发布了企业级云灾备解决方案。据介绍,此次发布的灾备解决方案来自阿里巴巴IT基础设施云化的灾备经验,完全省去灾备机房的建设规划,可大...
- 域名泛解析设置_域名解析包括泛域名解析
-
如何降低域名被恶意泛解析的风险买车用车不想被忽悠,就请关注缸微信号:kf12gang←长按可复制。我们每天将免费为您解答选车用车的相关问题。作者:QQ126058域名被恶意泛解析是域名安全最常见的问...
- 人人通云平台怎么注册 人人通云教学登录账号
-
世界那么大,她看到了:一个心理咨询师的十年心灵之旅来源:环球网“世界那么大,我想去看看。”十年前的那个春天,十个字的辞职信,戳中了无数国人的心,激起了无数个“诗和远方”的小梦想,被称为“史上最具情怀...
- 民用远程监控手机软件_民用远程监控手机软件下载
-
屏幕监控软件有哪些?3款好用的监控软件分享!管控摸鱼小case!作为企业管理者,我深知员工工作效率和信息安全的重要性。在日常管理中,我时常会遇到这样的难题:员工是否在认真工作?有没有利用公司资源做与工...
- 重量级!Maven史上最全教程,看了必懂
-
对8个MCP服务器框架的比较作者:FrankGoortani编译:小兰引言模型上下文协议(MCP)是一种新标准,用于以统一方式将AI助手(如LLM)与外部数据源和工具连接起来。自推出以来,各种框架已...
- 面试字节跳动,收到offer后我却拒绝了 ,给面试人的一些忠告!
-
面试字节跳动,我被面试官狂怼全过程!来源:https://www.zhihu.com/question//answer/人们都说,这个世界上有两种人注定单身,一种是太优秀的,另一种是太平凡的。我一听呀...
- ps1手柄 python Ps1手柄真假
-
别再花冤枉钱!教你一分钟辨别“真假”超皮秒▌什么是超皮秒?皮秒激光,就是每个激光发射的脉冲持续时间(脉宽)达到皮秒级别的激光;1ps等于的负次方秒,超皮秒其实是一种商业名称,本质上也是皮秒激光设备,我...
- 路由器接交换机UPLINK还是
-
最全攻略!网络小白也能看懂的交换机连接方法号主:老杨丨年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部中午好,我的网工朋友。在网络设备的世界里,交换机是不可或缺的存在。不同的连接方法...
- tempdb 清理 tempdb可以删除吗
-
无需改代码,提高SQLSERVER数据库性能的个最简单方法众所周知SQLSERVER是微软的数据库拳头产品,有着图形化友好界面、操作门槛低、部署难度小,一键式安装的特点,受到全球开发者及企业的青睐...
你 发表评论:
欢迎- 一周热门
-
-
维基百科Wikipedia镜像网站列表
-
超炫html+css+javascript幻化3D相册 (含背景音乐)程序员表白必备
-
6款图片查看器,丝滑干净无广告!(图片查看器软件)
-
不能读取文件“itunes.library.itl”因为它是由更高级别的itunes所创建的
-
用java编写一个QQ群发信息_用java语言写qq聊天程序
-
StreamReader StringReader 区别 reader和inputstream的区别
-
安卓系统手机文件夹及其文件详细解析
-
Windows Server 2003 详细安装与配置
-
作为一名独立开发者,我是如何建立我的科技创业公司的
-
计算机集成制造系统有哪些_计算机集成制造系统有哪些类型
-
- 最近发表
- 标签列表
-
- int.tryparse (62)
- list转list (108)
- repeat函数 (66)
- git force (69)
- springboot /error (71)
- mysql 更新 (74)
- save as pdf (63)
- lock tables (66)
- 同步 异步 阻塞 非阻塞 (62)
- rsyslog (66)
- querystring (63)
- c++ override (70)
- css 动画库 (61)
- vsphere web client (65)
- int32_t (63)
- c# task.run (68)
- find -size (64)
- golang flag包 (70)
- 二维数组作为参数传入函数 (62)
- sudo su root (60)
- crontab 安装 (61)
- c# 数组转成list (60)
- 下拉按钮 (64)
- 滚动条美化 (61)
- stringutils (61)