Engineer in the White Spaces

?

Engineer in the White Spaces

Michael Nygard

A SySTEM ConSiSTS oF inTERdEpEndEnT pRogRAMS. We call the arrangement of these programs and their relationships architecture. When we diagram these systems, we often represent individual programs or servers as simplistic little rectangles, connected by arrows.

One little arrow might mean, “Synchronous request/reply using SOAP-XML over HTTP.” That’s quite a lot of information for one glyph to carry. There’s not usually enough room to write all that, so we label the arrow with either “XML over HTTP” from an internal perspective, or “SKU Lookup” for the external perspective.

That arrow bridging programs looks like a direct contact, but it isn’t. The white space between the boxes is filled with hardware and software components. This substrate may contain:

???? Network interface cards ?

? Network switches ?

? Firewalls ?

? IDS and IPS ?

? Message queues or brokers ?

? XML transformation engines ?

? FTP servers

“Landing zone” tables Metro-area SoNET rings MPLS gateways

Trunk lines

Oceans

Cable-finding fishing trawlers

There will always be four or five computers between program A and B, run- ning their software for packet switching, traffic analysis, routing, threat analy- sis, and so on. As the architect bridging those programs, you must consider this substrate.

?

??I saw one arrow labeled “Fulfillment”. One server was inside my client’s com- pany, the other server was in a different one. That arrow, critical to customer satisfaction, unpacked a chain of events that resembled a game of “Mousetrap” more than a single interface. Messages went to message brokers that dumped to files, which were picked up by a periodic FTP job, and so on. That one “interface” had more than 20 steps.

It’s essential to understand the static and dynamic loads that arrow must carry. Instead of just “SOAP-XML over HTTP,” that one little arrow should also say, “Expect one query per HTTP request and send back one response per HTTP reply. Expect up to 100 requests per second, and deliver responses in less than 250 milliseconds 99.999% of the time.”

There’s more we need to know about that arrow:

? What if the caller hits it too often? Should the receiver drop requests on the floor, refuse politely, or make the best effort possible?

? What should the caller do when replies take more than 250 milliseconds? Should it retry the call? Should it wait until later, or assume the receiver has failed and move on without that function?

? What happens when the caller sends a request with version 1.0 of the pro- tocol and gets back a reply in version 1.1? What if it gets back some HTML instead of XML? Or an MP3 file instead of XML?

? What happens when one end of the interface disappears for a while? Answering these questions is the essence of engineering the white spaces.

时间: 2024-09-30 15:35:16

Engineer in the White Spaces的相关文章

xml操作-Nested exception: org.xml.sax.SAXParseException: White spaces are required between publicId and systemId. 异常处理

异常如下: org.dom4j.DocumentException: Error on line 2 of document file:///D:/workspaces/struts2/lesson01/src/newfile.xml : White spaces are required between publicId and systemId. Nested exception: White spaces are required between publicId and systemId

White spaces are required between publicId and systemId

org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 1 in XML document from class path resource [beans.xml] is invalid; nested exception is org.xml.sax.SAXParseException: White spaces are required between publicId and systemId.

"Insert spaces for tabs" does not work in Eclipse

Keywords: text editor, eclipse, indention, tabs, spaces, whitespaces, white spaces, convert "I have enabled the "Insert spaces for tabs" but there are still tabs fore tabs in editor that I am writing code. Why?" Actually, there are oth

最大流入门题目

HDU 3549 Flow Problem Time Limit: 5000/5000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 8728    Accepted Submission(s): 4083 Problem Description Network flow is a well-known difficult problem for ACMers. Given a

[ACM] POJ 3485 Highway (区间选点问题)

Highway Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 871   Accepted: 402 Description Bob is a skilled engineer. He must design a highway that crosses a region with few villages. Since this region is quite unpopulated, he wants to mini

ZOJ1372 POJ 1287 Networking 网络设计 Kruskal算法

题目链接:ZOJ1372 POJ 1287 Networking 网络设计 Networking Time Limit: 2 Seconds      Memory Limit: 65536 KB You are assigned to design network connections between certain points in a wide area. You are given a set of points in the area, and a set of possible

[从零搭网站五]http网站Tomcat配置web.xml和server.xml

点击下面连接查看从零开始搭网站全系列 从零开始搭网站 上一章我们在CentOS下搭建了Tomcat,但是还是没有跑起来...那么这一章就把最后的配置给大家放上去. 有两种方式:一种是用 rm -f 给这两个文件删掉,再用vim建新的出来.另一种是vim编辑,输入:set nu 显示行号,再输入:1,最后一行的行号d 把全文删掉. 然后再复制粘贴我给你们的配置文件就行. web.xml  , 完全不用修改,直接复制就行了: <?xml version="1.0" encoding=

Common Subsequence

A subsequence of a given sequence is the given sequence with some elements (possible none) left out. Given a sequence X = < x1, x2, ..., xm > another sequence Z = < z1, z2, ..., zk > is a subsequence of X if there exists a strictly increasing

hdu-1159 Common Subsequence (dp中的lcs问题)

Common Subsequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 38425    Accepted Submission(s): 17634 Problem Description A subsequence of a given sequence is the given sequence with some el