架构设计的抉择

当你生产砖土胚的时候,抉择是少的,当你制作一件瓷器胚子的时候,抉择就多了。

当我从企业应用设计转变为互联网设计的时候,我发觉每一个抉择都需要细密的权衡。

1、如何开始?当你不知道从何处开始的时候,就从最简单的可运行功能集开始:这个时代流行一个叫MVP的东西:minimum viable product-最小可用产品,在技术架构的开始,可能会更小:最小可运行功能集,这个功能集让你对你的产品的基本技术栈做一个从头到脚的原型测试,让你的团队和用户有一个实际可见可运行的讨论沟通原型。做过企业应用的人,追求上线即完美,因为企业应用的上线和系统业务运作之间的周期很小,企业应用的用户的是固定的,需求是相对具体的,领域业务模型带有一定的专业性。互联网的产品,产品概念模型最好就是大众认知模型,用户这个问题有高有低:在原有平台基础上构建的产品,其实用户群就不小,当然这种平台的公司的产品运作能力和实力也不弱,小团队创业型产品则不同,新的产品出来可能长时间都是晾着,长时间的用户发展速度很慢,业务的缓慢发展给产品的进化以及技术架构的进化留下了充裕的空间。追求功能集的一步到位,写多余的就是无用功,甚至会成为负能量。

2、当你无法自顶向下看透或掌控整个架构的时候,请从下面往上开始做。这个抉择在产品设计和实现设计上都可以用.

时间: 2024-10-03 07:50:03

架构设计的抉择的相关文章

MySQL性能调优与架构设计——第 14 章 可扩展性设计之数据切分

第 14 章 可扩展性设计之数据切分 前言 通过 MySQL Replication 功能所实现的扩展总是会受到数据库大小的限制,一旦数据库过于庞大,尤其是当写入过于频繁,很难由一台主机支撑的时候,我们还是会面临到扩展瓶颈.这时候,我们就必须许找其他技术手段来解决这个瓶颈,那就是我们这一章所要介绍恶的数据切分技术. 14.1 何谓数据切分 可能很多读者朋友在网上或者杂志上面都已经多次见到关于数据切分的相关文章了,只不过在有些文章中称之为数据的 Sharding.其实不管是称之为数据的 Shard

缓存架构设计细节二三事

本文主要讨论这么几个问题: (1)"缓存与数据库"需求缘起 (2)"淘汰缓存"还是"更新缓存" (3)缓存和数据库的操作时序 (4)缓存和数据库架构简析 一.需求缘起 场景介绍 缓存是一种提高系统读性能的常见技术,对于读多写少的应用场景,我们经常使用缓存来进行优化. 例如对于用户的余额信息表account(uid, money),业务上的需求是: (1)查询用户的余额,SELECT money FROM account WHERE uid=XXX

【58沈剑架构系列】缓存架构设计细节二三事

本文主要讨论这么几个问题: (1)“缓存与数据库”需求缘起 (2)“淘汰缓存”还是“更新缓存” (3)缓存和数据库的操作时序 (4)缓存和数据库架构简析   一.需求缘起 场景介绍 缓存是一种提高系统读性能的常见技术,对于读多写少的应用场景,我们经常使用缓存来进行优化. 例如对于用户的余额信息表account(uid, money),业务上的需求是: (1)查询用户的余额,SELECT money FROM account WHERE uid=XXX,占99%的请求 (2)更改用户余额,UPDA

社交产品后端架构设计

本篇文章会向读者展示几个架构设计的关键点,使一个社交应用能够成为真正的下一代社交产品.以下几个属性将会影响到架构的设计: a)可用性 b)可扩展性 c)性能和灵活性可扩展 目标 a)确保用户的内容数据能够很方便的被其他用户发现和获取. b)确保内容推送是相关的,不仅在语义上,也是从用户设备的角度. c)确保实时更新生成.推送和分析. d)尽可能地节省用户的资源. e)不论服务器负载变化如何,用户体验应保持不变. f)确保应用整体上是安全的 总之,我们要处理一个相当大的挑战,我们必须处理不断扩大的

微信红包的架构设计简介

@来源于QCon某高可用架构群整理,整理朱玉华. 背景:有某个朋友在朋友圈咨询微信红包的架构,于是乎有了下面的文字(有误请提出,谢谢) 概况:2014年微信红包使用数据库硬抗整个流量,2015年使用cache抗流量. 微信的金额什么时候算? 答:微信金额是拆的时候实时算出来,不是预先分配的,采用的是纯内存计算,不需要预算空间存储.. 采取实时计算金额的考虑:预算需要占存储,实时效率很高,预算才效率低. 实时性:为什么明明抢到红包,点开后发现没有? 答:2014年的红包一点开就知道金额,分两次操作

mysql性能调优与架构设计笔记

1.mysql基本介绍 mysql支持多线程高并发的关系型数据库; 数据库存储引擎InnoDB.MyISAM; mysql快速崛起的原因就是他是开源的; 性能一直是mysql自豪的一大特点; 2.mysql架构组成 麻雀虽小五脏俱全,mysql虽然简单但其内部结构并不简单; mysql物理文件组成之日志文件: 错误日志error log这里记录mysql运行时严重的警告和错误,以及mysql启动和关闭的日志信息 二进制日志 binary log 记录mysql运行时所有的query和query执

《游戏架构设计与策划基础》笔记 第一章 游戏策划概述(上)

1.1 什么是游戏策划 游戏的目的就是通过玩来获得娱乐,因此,设计游戏既需要艺术家一样的创造力,也需要工程师一样的精心规划.游戏设计是一门手艺,就像是好莱坞的电影摄像或服装设计一样.一个游戏既含有艺术要素,也含有功能要素:它必须能给人以美的享受,同时又必须能很好地运行,让游戏者享受到快乐.具备这两种特点的游戏才是好的游戏. 1.2 游戏策划的任务 游戏策划根据自己的创作理念,结合市场调研得来的数据,参考其他开发人员的意见和建议,在开发条件允许的基础上,将游戏创意以及游戏内容和规则细化完整,形成策

架构设计:系统存储(8)——MySQL数据库性能优化(4)

================================ (接上文<架构设计:系统存储(7)--MySQL数据库性能优化(3)>) 4-3.InnoDB中的锁 虽然锁机制是InnoDB引擎中为了保证事务性而自然存在的,在索引.表结构.配置参数一定的前提下,InnoDB引擎加锁过程是一样的,所以理论上来说也就不存在"锁机制能够提升性能"这样的说法.但如果技术人员不理解InnoDB中的锁机制或者混乱.错误的索引定义和同样混乱的SQL写操作语句共同作用,那么导致死锁出现的

架构设计:系统间通信(32)——其他消息中间件及场景应用(下2)

(接上文<架构设计:系统间通信(31)--其他消息中间件及场景应用(下1)>) 5-3.解决方案二:改进半侵入式方案 5-3-1.解决方法一的问题所在 方案一并不是最好的半侵入式方案,却容易理解架构师的设计意图:至少做到业务级隔离.方案一最大的优点在于日志采集逻辑和业务处理逻辑彼此隔离,当业务逻辑发生变化的时候,并不会影响日志采集逻辑. 但是我们能为方案一列举的问题却可以远远多于方案一的优点: 需要为不同开发语言分别提供客户端API包.上文中我们介绍的示例使用JAVA语言,于是 事件/日志采集