I have been doing a lot of reading lately on how one would go about developing an API server. It’s an interesting topic, with various established schools of thought and multiple real-world implementations to compare against. In this post, I am going to summarize my findings, for my own reference as well as for anyone [...]
Entries Tagged as 'software engineering'
Developing API Server – Practical Rules of Thumb
May 4th, 2010 · Comments Off
Tags: software engineering
On Dangers of Prematurely Making API Public
February 6th, 2010 · 3 Comments
From time to time, I come across a statement that every service on the Internet must have an API, or people behind this service are doing it wrong. This phrase usually applies specifically to publicly available API.
As a user who stands to benefit from increased number of services allowing third-party applications and mashups, I certainly [...]
Tags: Internet · software engineering
Normal Accidents in Complex IT Systems
January 11th, 2010 · 3 Comments
Designing a fully-automated or nearly-fully-automated computer system with many moving parts and dependencies is tricky, whether a system is distributed, hyper distributed or otherwise. Failures happen and must be dealt with. After a while, most folks grow up from “failures are rare and can be ignored” to “failures are not that rare and can not [...]
Tags: distributed · infrastructure development · software engineering
Standalone Web Front Door a Must in EC2?
October 13th, 2009 · 4 Comments
Most of you have probably heard about a recent outage at BitBucket. In a nutshell, their systems hosted at AWS came under a UDP flood DDoS attack, which led to significantly increased traffic, which led to saturation of their local network interface, which led to their being unable to connect to their data stored on [...]
Tags: cloud computing · infrastructure development · software engineering
The Concept of Hyper Distributed Application
August 18th, 2009 · 1 Comment
Most folks in the industry are familiar with “distributed applications.” If app components are running on multiple hosts and need to communicate with each other using network, the app is said to be distributed.
Distributed applications are known for complexity of assuring all components are on the same page as to what’s going on around them. [...]
Tags: Internet · distributed · software engineering



