Stack Overflow 2016最新架构探秘

这篇文章主要揭秘Stack Overflow截止到2016年的技术架构。

首先给出一个直观的数据,让大家有个初步的印象。
相比于2013年11月,Stack Overflow在2016年02月统计数据有较大变化,下面给出2016年02月09号一天的数据,如下:

  • HTTP请求数209,420,973 (+61,336,090)
  • 网页加载次数 66,294,789 (+30,199,477)
  • HTTP流量发送有1,240,266,346,053 (+406,273,363,426)字节 (1.24 TB)
  • 接收数据总量569,449,470,023 (+282,874,825,991) 字节(569 GB)
  • 发送数据总量3,084,303,599,266 (+1,958,311,041,954) 字节 (3.08 TB)
  • SQL查询数(HTTP请求)504,816,843 (+170,244,740)
  • Redis命中数5,831,683,114 (+5,418,818,063)
  • Elastic 查询次数17,158,874 (未计入2013年的数据)
  • 标签引擎请求次数3,661,134 (+57,716)
  • SQL查询耗时607,073,066 (+48,848,481) 毫秒 (168小时)
  • Redis命中耗时10,396,073 (-88,950,843) 毫秒 (2.8 小时)

你很难想象到.NET技术架构能够在每天6100万请求的情况下减少757小时的处理时间(相比于2013年)。这些改善既得益于2015年早期的硬件设备升级,也跟软件的性能优化有极大的关系。

那么最近两年在硬件上有什么变化呢?以下为截止到目前为止的硬件列表:

  • 4台数据库服务器(微软SQL Server),其中两台更新硬件配置
  • 11台Web服务器(IIS),都已更新硬件配置
  • 2台分布式缓存和消息处理服务器(Redis),都已更新硬件配置
  • 3台应用服务器(实现了tag引擎功能),其中两台为新硬件配置
  • 3台搜索服务器(ElasticSearch),配置同2013年
  • 4台负载均衡服务器(HAProxy),其中新增加的两台用于支持CloudFlare的CDN加速服务
  • 2台网络交换机(每个都是Cisco Nexus 5596 + Fabric Extenders,并升级网卡10Gbps)2台Fortinet 800C(替代2台Cisco 5525-X ASA防火墙)
  • 2台Ciso ASR-1001路由器(替代2台Cisco 3945路由器)
  • 2台Ciso ASR-1001-x路由器

为了支撑Stack Overflow运行,那需要做点什么呢?其实跟2013年相比并没有什么显著变化,只是做了前面提到的硬件升级和程序的性能优化。
现有系统一般都不会完全隔离开来,Stack Overflow也不列外。一图胜千言,下面给出Stack Overflow的整体架构效果图。本篇文章仅给出硬件整理的逻辑架构的亮点,具体的硬件细节部分将在下一篇文章详细介绍。
图1是机架A(在2015年2月升级的)的实物图片展示。

图1
现在来给出主要系统的逻辑架构图,如图2。

图2

基本规则

首先给出全局的通用规则:

  • 万事需要备份
  • 所有服务器和网络交换机要至少2 x 10Gbps带宽
  • 所有服务器配备两个电源(带有UPS电源备用)
  • 所有服务器在机架A和B上互为冗余
  • 所有服务器和服务都有异地双活(纽约机房和科罗拉多州机房)

网络服务

首先,用户去Stack Overflow网站浏览就要通过Internet。为了让用户浏览网站的速度更快Stack Overflow采用CloudFlare的CDN加速。这里使用CloudFlare服务是因为它们的CDN服务器遍布全球。
紧接着,用户的HTTP流量通过四大ISP提供商(Level 3,Zayo,Cogent和Lighttower),经过四台路由器。Stack Overflow通过标准的边界网关协议(BGP)来均衡所有的流量以便用户更有效率的打开网站。Stack Overflow的工程师Nick Craver建议在两个异地数据中心采用一个10 Gbps MPLS,这样在出现突发情况下可以快速的恢复和复制数据。

负载均衡(HAProxy)

负载均衡使用的HAProxy 1.5.15和CentOS 7,并在HAProxy加入安全传输层协议(TLS/SSL)。后续会升级HAProxy到1.6版本来支持HTTP/2。

负载均衡器配备2对10Gbps网络。Stack Overflow通过加内存来有效的解决安全套接层(SSL)问题。缓存安全传输层协议(TLS)会话到内存加以重复使用,这样可以减少对于同一台客户端连接的重复计算,到达提升会话的速度和成本。况且RAM相当便宜,实现了双赢的效果。

负载均衡器的设置是相当的简单。它们监听各路IPs,并进行路由分发。Stack Overflow还做了负载均衡限流和监控HAProxy的日志做到及时报警。

Web层架构(IIS 8.5,ASP.Net MVC 5.2.3,和.Net 4.6.1)

Stack Overflow经过负载均衡层导入流量到9台Web服务器(“primary”服务器),另外两台做网站元数据等环境管理。除meta.stackoverflow.com和meta.stackexchange.com外,Stack Overflow、Careers和Stack Exchange网站业务都在“primary”服务器运行。

在监控平台Opserver上可以看到,Stack Overflow在Web层的分布,见图3

图3
更直观的看下对应的web服务器的图形展示,见图4

图4

服务层(IIS,ASP.Net MVC 5.2.3, Net 4.6.1和HTTP.SYS)

在整体逻辑架构图上可以清晰的看到,紧挨着Web层的是服务层(部署在Window服务器Windows 2012R2上)。其有两个重要的功能:tag应用服务器(基于http.sys)和API(基于IIS)。为了提升这两个服务做了非常多的冗余,但不超过9倍的冗余。举个列子,从数据库加载所有的网页和对应的tags变化(每n分钟(当前设置为2分钟))是非常耗时的。这里只需要加载三次即可保证安全。Stack Overflow也同时在硬件层做了相关的优化。Tag应用服务是一个比较复杂的topic,这里简单说下,当你访问/questions/tagged/java就使用tag应用服务。还有所有/search和导航也都是用的这些数据服务。

缓存&发布/订阅(Redis)

Stack Overflow在缓存层用Redis,Redis服务器256GB内存,采用master/slave结构部署,尽管每个月16000万的ops,每个实例的CPU使用率也在2%之下。

图5
Redis所在服务器有L1/L2高速缓存,Web服务的HTTP缓存设置在一级缓存L1中,Redis缓存在二级缓存L2。当用户访问在一级缓存L1中未命中后会去二级缓存中的Redis取值,这些值以Protobuf格式存储,并以protobuf-dot-net解析。Redis客户使用的StackExchange.Redis(Stack Overflow内部实现并开源了)。如果web服务在L1和L2两级缓存都未命中,则会直接去原始数据源获取(比如,数据库查询,API回调等),然后并把获取到的结果缓存到本地和Redis中,这时其它服务未命中L1高速缓存便会去二级缓存L2/Redis中获取,节省了调用数据库查询或者API回调的访问时间。

大部分运行的问答网站都有自己的L1/L2高速缓存,通过L1缓存Key前缀、L2/Redis缓存数据库ID。

尽管Redis主要是用来缓存,但也起到一个消费和订阅的功能,Redis可以推送一个消息,然后其他订阅者来订阅消息(包括下游的Redis从库在订阅消息)。

Websockets (NetGain)

Websockets实时的推送消息(比如,顶栏的通知,投票,新的答案和评论)给用户。
Sockets服务器运行在web层,NetGain是Stack Overflow实现的一个轻量级高性能实时的开源消息中间件。高峰期可达到50万并发的websocket连接。
下图展示的是一周websocket并发情况:

图6

Search (Elasticsearch)

Stack Overflow的工程师Nick Craver表示搜索层并没有激动人心的部分。在web层采用Elasticsearch 1.4,并内部实现了高性能的StackExchange.Elastic客户端,此部分代码未开源。Stack Overflow使用Elastic来查询相关的问答。

每个数据中心都有一个Elasticsearch集群,包含三个节点,每个都建有自己的索引。三个Elasticsearch集群全部使用SSD存储,192GB内存和双10Gbps网卡。

Stack Overflow使用Elasticsearch代替先前的SQL全排索引,主要因素是:Elasticsearch的扩展性和低成本。

数据库(SQL Server)

SQL Server是Stack Overflow唯一的源数据库,所有Elastic和Redis的数据都来自SQL Server。使用微软的SQL Server监控组件AlwaysOn Availability Groups部署了两个SQL Server集群。每个集群有一个主库,一个数据备份在纽约,另一个数据备份在Colorrado数据中心。所有备份是异步复制。
第一个集群硬件配置:Dell R720xd服务器,384G内存,4TB SSD存储,双12核CPU;第二个集群硬件配置:Dell R730xd服务器,768G内存,4TB SSD存储,双8核CPU。
所有数据库过去24小时CPU监控图如图7所示,大部分情况CPU使用率较低,偶尔做下缓存任务时会高些。图中NY-SQL02和04是主库,01和03是备份库。

图7

纵观全文,Stack Overflow整体架构并没有采用那些非常高端的技术,却造就了一个IT界最受欢迎的问答网站之,这是非常不错的。其中每项使用到的技术都进行了深入的研究并开源分享给社区,国内的公司可以从中获得一些启发。

【来源】:infoQ: http://www.infoq.com/cn/news/2016/03/Stack-Overflow-architecture-insi

12个强大的Web服务测试工具

1.SoapUI (https://www.soapui.org/)

SoapUI是一个开源的,跨平台的测试工具。它可以自动操作功能、回归、合规以及SOAP和REST web服务的负载测试。它配备了一个易于使用的图形界面,并支持行业领先的技术和标准,以模拟和鼓励web服务的行为。

主要特征

  • 以一种Project、TestSuite、TestCase或LoadTest水平提供可打印,可导出,和基于HTML的报告。
  • 自带集成Hudson、Bamboo、Maven、ANT和JUnit。
  • 允许开发自己的一套功能作为SoapUI插件。
  • 记录、监视和显示所有数据。
  • 支持WS-Security和SSL解密。

2.TestingWhiz (http://www.testing-whiz.com/)

TestingWhiz是一种无编码测试自动化工具,自带API / web服务测试能力。它可以让你执行功能、回归、合规,以及基于HTTP和FTP通过WSDL接口的REST和SOAP web服务的负载测试和模拟。它也允许我们进行拒绝服务和渗透检查,以确保web服务的整体健康。此外,它还可以让你执行从端到端的测试,从Web UI,业务逻辑,到数据库和ETL,而无需编码。

  • 支持字符串比较来验证API响应。
  • 通过集成的bug跟踪工具,如JIRA,Mantis和FogBugz来帮助记录API缺陷。
  • 用一个收发邮件设施生成可视化的日志和测试执行报告。
  • 允许跨越多台机器和节点的分布式并行执行。
  • 用Jenkins、Bamboo & Hudson提供持续集成。
  • 支持数据驱动和关键字驱动测试。

3.SOAPSonar (http://www.crosschecknet.com/products/soapsonar.php)

SOAPSonar为HTML、XML、SOAP、REST和JSON提供了全面的web服务测试。它通过对OASIS和W3C标准的开箱即用提供了功能、性能、合规性、互操作性和安全测试。

  • 用XSD-mutation支持漏洞测试。
  • 提供全面的WSDL和Schema解析。
  • 用行为建模和多路同时负载事务来执行负载测试。
  • 提供XML,DOC,XLS,PDF,RTF和RPT格式的报告。
  • 与HP质量中心集成。

4.SOAtest (https://www.parasoft.com/product/soatest/)

SOAtest是利用Parasoft测试验证API和API驱动应用程序的一个企业级工具。它对功能单元,集成,安全性,仿真,模拟,合规以及技术,如REST、JSON、MQ、JMS、TIBCO、HTTP和XML的负载测试提供了强健的支持。

  • 提供端到端的测试。
  • 支持120+协议/消息类型。
  • 自带一个易于使用的界面。
  • 帮助创建复杂,可扩展和可重用的测试,而无需编码。
  • 支持连续集成测试。

5.TestMaker (http://www.pushtotest.com/testmaker-open-source-testing)

TestMaker是一个开源工具,通过PushToTest来测试和监测web,web服务和SOA应用程序的性能。它运行在Jython(用Java编写的Python)上。TestMaker可以重用Selenium测试,SoapUI测试,Sahi公司测试或任何用Groovy,Java,Python,PHP,Ruby和Perl写的测试到功能,负载和性能测试中。

  • 对于功能、负载和性能测试使用命令行提示。
  • 用标准的多窗口IDE提供一种直观的外观和感受。
  • 提供一个监测仪表板来运行测试,并显示实时结果。
  • 归功于Jython语言,因此允许访问所有的Java库和类。

6.Postman (https://www.getpostman.com/)

Postman是另一个API / web服务测试工具,它自带功能强大的HTTP客户端支持。它有一个易于使用的请求构建器,允许你编写测试用例和管理响应数据和响应时间,以便于API测试用例的高效测试和管理。

  • 允许在一个叫Postman Collections的功能中收集和组织API。
  • 促进协作和API数据以及团队控制的共享。
  • 自带粘贴文本的功能,用于在命令行窗口创建无障碍测试。
  • 允许在Postman界面内编写Boolean测试。

7.vRest (https://vrest.io/)

vRest是一个专门用于测试,模拟,以及REST API和Web服务验证的工具。它还支持与第三方API或HTTP服务交互的web,移动和桌面应用程序的测试。

  • 自带一个模拟服务器功能,可用于在几分钟内创建API模拟。
  • 提供了一个Chrome扩展来录制和播放测试案例。
  • 支持与用于服务器整合的Jenkins整合,以及与用于bug跟踪的Jira整合。
  • 有利于角色和权限管理。
  • 允许导出和引入测试用例和来自于外部工具,如Postman Collections、Swagger 2等的报告。

8.HttpMaster (http://www.httpmaster.net/)

HttpMaster是另一个用于REST web服务测试的专用工具。它可以帮助测试人员测试REST API的行为,并验证以如XML、JSON和HTML格式输出的数据。凭借其通用的HTTP工具,HttpMaster也可以帮助开发人员模拟客户活动和API应用程序的响应行为。

  • 自带一个易于使用和优雅的用户界面,不需要高级技术技能。
  • 使用如GET,POST,DELETE等的HTTP方法。
  • 提供不同的验证类型和表达式来缓解测试。
  • 对测试创建和执行使用命令行界面。
  • 允许存储所有信息——API调用和项目数据到一个独立的空间。

9.Runscope (https://www.runscope.com/)

Runscope是一个简单的工具,用来测试和监控API的性能。它可以帮助你验证是web服务还是API返回了正确的数据,同时当API出问题时给出提示。Runscope还支持API和移动app的后端服务测试。

  • 允许用动态数据为甚至更复杂的情况创建测试。
  • 显示视觉效果丰富的指标和分析来发现问题。
  • 集成如HipChat,Webhooks,Slack和PagerDuty的工具,以便于当API坏掉时发出通知。
  • 允许重用和执行跨多个地点的测试。
  • 方便在中心管理测试促进更好的团队协作。

10.Rapise (https://www.inflectra.com/Rapise/)

Rapise是一个健壮的自动化工具,有着强大和可扩展的功能。它基于一个开放和灵活的用于REST / SOAP网络服务的快速功能测试的体系结构。 Rapise还提供对web应用程序的支持,web应用程序用用Java,.NET,AJAX,Silverlight和Flash内置。

  • 使用HTTP标准方法,如POST,GET,PUT和DELETE。
  • 允许存储针对特定网络服务的原型请求。
  • 包含内置REST定义的生成器和对象库。
  • 自带强大的集成报告功能。
  • 支持跨浏览器测试和并行执行。

11.WebInject (http://www.webinject.org/)

WebInject是一款用于自动化功能,验收和回归web和web服务测试的免费工具。它是一个命令行工具,基于Perl,简化了测试的执行,因为它不需要在命令提示符上花时间。此外,它没有类似用户接口的IDE,这意味着,测试是在WebInject UI之外写入的。它可以在有Perl解释器的平台上运行。

  • 提供实时结果显示。
  • 监视系统响应时间。
  • 支持不同的用处——作为一个完整的测试框架,或作为一个独立的测试运行器。
  • 生成HTML和XML格式的报告。
  • 允许与其他系统集成,作为外部监督的插件。

12.Storm (http://storm.codeplex.com/)

最后,Storm是另一个CodePlex的开源工具,用来测试用Java或.NET编写的web服务。目前,它仅支持SOAP web服务。

  • 允许测试来自于独立UI的多个web服务。
  • 帮助编辑原始的SOAP请求。
  • 允许调用包含复杂数据类型的web服务方法。
  • 支持WCF app的测试。

以上来源码农网,并稍加处理。

关于前端面试

摘自:https://mdluo.github.io/blog/about-front-end-interview/

继上一篇 关于程序员求职简历 之后如果顺利的话就应该是面试了,在此也整理一下最近在网上收集的前端面试相关资料,包括预备知识、书籍、面试考点、面经等。前端方面资料其实太多太多,就光从知乎、前端乱炖、w3cplus 等网站就能找到很多,所以针对细节不发散,仅挑一些内容丰富的合集,更多的资料可以从其中找到。

1. 前端团队

参考我整理的列表(部分维护了网站、技术型前端团队): 国内知名前端团队

2. 知识技能

前端技能汇总 Frontend Knowledge Structure (源码)(朴灵,阿里巴巴)

大前端的瑞士军刀,只记录有用的源码)(聂微东,百度)

前端收集(罗磊,腾讯阅文)

知乎上前端开发领域有哪些值得推荐的问答?——知乎

2015-2016前端知识体系图谱(w3ctech)

前端收藏夹源码)(w3ctrian)

QQ联盟群交流(492107297)群规(有大量的教程、资料、面试题)(豪情)

3. 学习路线、书籍

前端开发者手册(Pomy,美团)

有哪些关于前端开发技术(HTML、CSS 和 JavaScript 等)的值得推荐的书籍?(李路,Knewone)

前端路上的旅行(大漠,淘宝)

Developer进阶书单(phodal,ThoughtWorks)

年后跳槽如何准备?(豪情)

学习前端的这一年(Helkyle @ w3ctrian)

零基础的前端开发初学者应如何系统地学习?——知乎

4. 面试考点、面经

写给前端面试者(大漠,淘宝)

谈谈面试与面试题谈谈面试与面试题 II (winter,淘宝)

互联网公司技术岗实习/求职经验(实习内推+简历+面试+offer篇)(张秋怡,阿里巴巴)

史上最全 前端开发面试问题及答案整理(trigkit4,口袋购物)

最全前端开发面试问题及答案整理(AutumnsWind)

前端开发面试题(马云云,ZTE)

收集的前端面试题和答案(邱德清,阿里妈妈)

web前端面试相关的知识点(王文杰,乐视云)

2016十家公司前端面试小记(沧海)

一道常被人轻视的前端JS面试题(沧海)

Web前端开发测试题(大漠,淘宝)

常见前端面试题及答案(默语,腾讯)

前端工作面试问题(一)(Ruipeng Zhang,哈工大)

面试经验分享之数据结构、算法题(Song Chengru,清华)

名企笔试(伯乐在线)

如何面试一名前端开发工程师?(芋头,大搜车)

国内大型互联网公司(如BAT)对于web前端开发方向校招都考些什么?——知乎

如何面试前端工程师?——知乎

初级前端面试需要带什么作品?——知乎

5. 网站、专栏、周刊

前端开发 —— 知乎

前端 —— 稀土掘金

前端乱炖

w3cplus

w3ctech

前端开发博客

前端观察

前端De早读课

前端大全 —— 伯乐在线

前端 —— 开发早读课

imweb前端社区

奇舞周刊

精华 —— CNode社区

web前端开发 —— segmentfault

发现:前端 —— 开发者头条

6. 前端新技术

谈谈前端『新』技术(尤雨溪,Meteor)

为什么整个互联网行业都缺前端工程师?(100offer)

近几年前端技术盘点以及 2016 年技术发展方向(小胡子哥,淘宝)

如何跟上前端开发的最新前沿(GitHub)

2015年个人总结

年末了,回看总结下。

2014年于我是一个比较糟糕的一年,“悠闲”了一阵,所以未做个人总结。

生活上,这年改变不少。最大的改变是结婚了,非常感谢她,生活得很开心,一辈子。

工作上,这年很忙,却感觉没什么收获,或许主要时间花在产品上,技术没啥关注,现在产品也没啥表现。现在做开店平台有得玩吗?(如果有好产品,想多一个销售渠道,咱们可以聊聊)。工作也依旧迷茫,经常浮躁。

学习上,这年没看几本书,倒是买了千把元书。初步学习了 iOS,Android 开发,但又凉了一阵。

总体,2015是满意的,因为有她,2016年下来更多的责任,专注:

  • 家庭: 尽力协调好工作和家庭,让家人生活的更幸福。家庭成员升级下。掌握摄影,记录生活的点点滴滴。
  • 专业技能: 往全栈工程师发展吧,新年全面掌握移动端开发(iOS,Android),深入了解下 PHP。
  • 感染力: 跨界学习,多看几本人文的书籍。多和人交流和分享自己的想法和经验(先带些亲朋好友开始),让自己变得有趣点。
  • 性格: 有些事情上,犹豫,模棱两可的性格吃亏不少。

虽然计划总是赶不上改变,督导下自己也好。

喜欢这句:小时候,幸福是一件东西,拥有就幸福;长大后,幸福是一个目标,达到就幸福;成熟后,发现幸福原来是一种心态,领悟就幸福。

最后,祝福大家新的一年身体健康,顺心顺意!

 

网站速度测试工具(8款推荐)

8款非常有用的网站速度测试工具,更加全面的了解网站性能:

  • PageSpeed Insights:出自google,通过分析网页的内容来提供网站加载速度优化建议。
  • pingdom: 在线检查网站每个元素的加载速度,生成非常详细的测试报告,帮助你轻松优化网站。
  • Load Impact:提供在线测试服务,能够生成详尽的测试报告。目前已提供了543819次在线测试服务。
  • Neustar Web Performance:帮助你简单快速的了解网站的加载速度,不需要编写任何的测试脚本。
  • WebPagetest:能够帮助你测试网站在 IE6-IE9,Chrome,Firefox 等各种浏览器环境下的加载速度。
  • OctaGate SiteTimer:这款工具提供的测试情况和 Firebug 的网络功能测试类似,有各个请求的加载情况。
  • Which Loads Faster:在线对比两个网站的速度,例如Google vs Bing,Apple vs Adobe等,帮助你了解哪个网站加载更快。
  • Show Slow:这是一款开源的测试工具,能够测试网站在 YSlow, Page Speed, WebPageTestdynaTrace AJAX Edition 中的情况。

2013年个人总结

又到年末,依旧感叹时间的飞逝。隔了大半年,才这里写上一篇文章,而且是年度总结,感觉更是无从下笔。

如果按客观格式写点个人总结:

1)这一年做了什么事情?
2)上一年的总结的计划的事情进展的如何?
3)具体分析完成的事情或目标情况,如完成的百分比,有哪些偏差,有哪些好坏等等?
4)明年的计划和展望是什么?

可是,还是觉得难以表达,难以总结。

这一年,过得还是很「混沌」和「迷茫」,创业团队快两年了,还是处于探索期,在尝试不同的方向,团队成员有疲惫,失去信心的状态。我很是自责,在产品规划、设计和运营这方面经验很不够(我是一个技术能力马马虎虎的coder)。但非常感谢团队的信任!

上一年(2012年的个人总结)计划中,无一实现。但是这年感觉过的很忙很忙,停下来静思,却一点也不充实,无积累。

总之,能力(先产品设计,部门协调,市场营销等能力,这些能力也说得很泛)还很浅很浅,学习再学习,专注再专注。

2014年,2013过去,1314,瞄~

2014年,电子商务又会有一个怎样的发展?阿里双11一天的350亿销售额更说明电商在咄咄逼传统行业。

2014年,移动互联网会进阶到怎样的时代,2013年可以说是移动互联网的创业大潮的青春时代,看过《浪潮之巅》,大家应该就站在移动互联网浪潮之颠吧。所以,骚年们,咱生得逢时啊,但是怎么抓住呢?那个愁啊!

所以,2014年,我的关键字有大家说得老烂的字词 「电子商务」、「移动互联网开发技术」,还有一个非常关键的「爱情->婚姻」。(大伙祝福我吧)

最后,虽然很啰嗦,很负面的呱啦了一段,但马年伊始,祝福大伙想啥「马上」有啥!哈哈…

「界面设计」「视觉设计」「交互设计」之间的关系是什么?如何理解?

以下内容摘自「知乎」网站。

———————————-

回答1:JimSoup,用户体验/品牌设计师

不用把交互和视觉的职责目的分得太开,他们只是使用的工具不同而已

交互设计师需要用非常清晰和流畅的操作和逻辑框架来提高用户体验,这些交互流程更多是隐藏在操作过程中,有各种逻辑关系的层次。而视觉设计师使用让我们眼睛直接感受到的视觉效果来传达一个产品的意图,更加浮在表层上。

可能这些说法并不是非常具象。我一直以来比较赞同的是建筑设计行业的一套说法——建筑设计(界面设计)、交互设计师(结构师)、视觉设计师(建筑/外观设计师)。

首先接到建筑需求后,经理(产品)会评估整个建造过程并统筹安排,他应该是最了解整个工程项目的进度和细节的,最具有大局观的人。

在建筑设计的过程中,结构师(交互设计师)会设计整座建筑的结构——楼层得有多少层,占地面积多少,每层多少户,什么结构更加稳妥,楼梯和各种管道如何铺设。居客很难看到结构师做了什么,但他们的确很重要。

而建筑/外观设计师(视觉设计师)则会设计整座建筑的外观,甚至细节到每户中房间和大厅的布局和装修。这些都是为了让居住这里的人住得更舒服。你并没办法说哪个更重要,只能说缺谁都不行。

如果说一个产品就好像一个人一样,那么交互为其骨骼,视觉则是其肌肤。开发为其肌肉和器官,产品为其大脑,而运营为其血液。

所以,设计师的同行,不要只是认为交互只是把操作流程做得流畅,视觉也肯定不是为了把界面做得更漂亮。这些都不是目的。

相比开发来说,设计能为产品解决的问题的确不多。但是,设计可以做到——让用户享受问题

———————————-

回答2:张书泓,腾讯交互设计师

“界面”是机器中的一部分——通过这个部分,用户可以了解机器的状态、对机器进行控制、并获取反馈。“界面”不仅包括图形界面,也包括实体界面。

“视觉”是一种人的感官类型——通过这一个感官,用户可以了解信息,感知物体,被激发情绪。“视觉”不仅包括美观,更包括引导。

“交互”是一种行为类别——在这种行为类别中,用户会发出自己的行为请求,接受者随之给予用户反馈和后续行为的引导。

本质上来讲这三者没有比较的意义,因为它们是不同视角下的概念。

如果非要画个范围,大致会是这样:

它们有大量不重叠部分。界面设计还包括很多技术层面的东西,视觉设计包括大量感官传达的东西,交互设计也有一些其他的纯行为流程类的东西。

—————- 以上只是广义上的看法 ———————

现实工作中一般不会牵涉这么广的看法,互联网业界对着三者的理解是窄化了的概念。

如果你到互联网公司求职,职能上可能会这样划分:

千万注意,这只是职能上这么划分。部分职能所做的事也并不是和广义上一致的。
例如一般不存在界面设计这个层面的职位。例如界面布局也可能划到交互设计范畴。
例如界面的跳转引导也可能归到视觉设计。
总之,这只是职能上这么划分。

如果你希望成为一个合格的设计师,对设计的理解和能力的千万别受这个边界限制。

一个合格的设计师“最起码”应该这样理解:

要做出好东西,理念和能力都应尽量融通,走得远一点,了解得广一点更好。

———————————-

回答3:林朝辉,产品设计师在创业路上,伪哲学家、伪管理…

用岗位职责来回答你比较容易理解:

1、界面设计和视觉设计都是美术类的岗位,但工作分工不同:
界面设计:UI(User-Interface Design),用户界面设计,例如软件、网站、APP等;
视觉设计:Visual Design,更多偏向品牌、形象设计,例如广告、海报、周边等;

2、交互设计(Interaction Design)则是对人机交互界面、反馈、流程的设计,与界面设计配合;

3、如果以一个手机APP项目为例,
交互设计让产品更好用,界面设计让产品更好看,视觉设计让产品更好卖(用户更想用或买)。