Fubaredness Is Contagious

Dmitriy Samovskiy’s Blog

Entries Tagged as 'software engineering'

Developing API Server – Practical Rules of Thumb

May 4th, 2010 · Comments Off

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 [...]

[Read more →]

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 [...]

[Read more →]

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 [...]

[Read more →]

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 [...]

[Read more →]

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. [...]

[Read more →]

Tags: Internet · distributed · software engineering