Showing posts with label System Design. Show all posts
Showing posts with label System Design. Show all posts

Thursday, May 22, 2008

Scalability Principles

Posted by Floyd Marinescu on May 21, 2008 01:06 PM
At the simplest level, scalability is about doing more of something. This could be responding to more user requests, executing more work or handling more data. While designing software has its complexities, making that software capable of doing lots of work presents its own set of problems. In this article, Simon Brown presents some principles and guidelines for building scalable software systems.

Read Scalability Principles, by Simon Brown

The principles covered in the article include:
  1. Decrease processing time
  2. Partition
  3. Scalability is about concurrency
  4. Requirements must be known
  5. Test continuously
  6. Architect up front
  7. Look at the bigger picture
more...

Wednesday, February 27, 2008

Amazon EC2 - What You May Not Have Known

Amazon’s Elastic Compute Cloud (EC2) has the goal of providing flexible computing capacity in the form of a service. This service provides the user with the ability to quickly scale to the demands of an application by booting or shutting down servers in a matter of minutes. Since all these machines run in a virtual environment, you only need to pay for the resources you use. More detailed information can be found on Amazon’s EC2 home page - http://aws.amazon.com/ec2/ Much of the documentation provided by Amazon was straightforward and easy to follow so for a full walk-through see http://docs.amazonwebservices.com/AWSEC2/2007-08-29/GettingStartedGuide/. We will assume that the reader is familiar the basics of EC2.

This article focuses on the problematic aspects of EC2 - issues that can lead to serious problems or technicalities that if ignored, can lead to frustrating hours wasted on troubleshooting and debugging. We've learned that the single most important thing you can do for your EC2 environment is to give it a dynamic DNS solution it can use to overcome the DHCP nature of virtual machines. Now what can you do for yourself, you ask? Take a look at the gotchas we encountered and save yourself from dealing with the same problems.

more....

Tuesday, February 26, 2008

SaaS Architecture Maturity Model

Dharmesh Shah recently wrote about a maturity model of Software as a Service (SaaS) architectures. Drawing on previous thoughts from Gianpaolo Carraro that scalability, multi-tenancy, and customization through configuration are requirements, Dharmesh laid out 5 levels of a SaaS architecture maturity from 'Chaos' to 'Utopia' and provided his thoughts on the economics behind each one.
  • Level 0 (Chaos); Every time you add a new customer, you add a new instance of the software.
  • Level 1 (Managed Chaos): Every customer runs on the same version of the software and any customizations are done via configuration.
  • Level 2 (Multi-Tenant, Highrise): You've got all customers running on a single version of the software, and they're all running essentially on one "instance".
  • Level 3 (Multi-Tenant, Build-Out): This is when you've got multi-tenant, single version of the software model. But, you can scale-out (add buildings at will).
  • Level 4 (Utopia): This is like Level 3, except you've figured out an efficient way to run different versions of the software on different "instances".
Gianpaulo's original maturity model moved from custom version and instance per customer through single versions for all customers but each on their own instances and on to single version with single scalable instance for all customers. Dharmesh added the Utopian level in which you can also effortlessly deploy "sandbox" instances for any given customer.

Dharmesh's main point in discussing the model was:
"One of the big advantages for SaaS start ups is the opportunity to be economically efficient along many dimensions through multi-tenancy. But just because the opportunity is there doesn't necessarily mean that every start up is exploiting it equally."

The key behind the economic advantages is an architecture that uses "customization through configuration" and intelligent data partitioning. Without these two elements, you probably won't be able to move past Level 1 (Managed Chaos) and recognize the efficiencies of multi-tenancy.

Noel Huelsenbeck commented that this maturity model might not fit your organization's business model:
"Also wouldn't your price point and overall market dictate what level you end up at? There's a small chance an app like Quicken for the Web would make a customization and hence be at level 3/4 but if I'm a Fortune 500 company I would bet Salesforce.com will probably go back to Level 0 to get my business."

Commenter 'brk' made the observation that there are some big risks that come along with the big economics of being high on the SaaS maturity model. As you approach the point where all of your customers are sharing code, hardware (virtual or physical), and administration you run the risk of any small problem with a client can impact your entire client base.

original post

Tuesday, December 04, 2007

Space-Based Architecture (SBA)

Space-Based Architecture (SBA) is a software architecture pattern for achieving linear scalability of stateful, high-performance applications using the tuple space paradigm. It follows many of the principles of Service-Oriented Architecture and Event-Driven Architecture, as well as elements of grid computing. With a space-based architecture, applications are built out of a set of self-sufficient units, known as processing-units (PU). These units are independent of each other, so that the application can scale by adding more units.

The SBA model is closely related to other patterns that have been proved successful in addressing the application scalability challenge, such as Shared-Nothing Architecture, used by Google, Amazon.com and other well-known companies. The model has also been applied by many firms in the securities industry for implementing scalable electronic securities trading applications.



more....

Monday, December 03, 2007

Architectures you've always wondered about

Have you ever browsed to a site like eBay or Second Life and wondered or even fantasized about what software architecture they may have used and what insights their teams must have after solving such complex and large-scale problems.

This year's past QCon in London saw the architects of Yahoo, eBay, and Amazon present their designs and lessons learned. QCon San Franisco will feature more of these big boys and other industry leading companies to give you an exclusive chance to learn directly from some of the most known and high-volume web applications in the world.


download slides here


Tuesday, November 13, 2007

OSGi technology

OSGi technology is the dynamic module system for Java™

OSGi technology is Universal Middleware.
OSGi technology provides a service-oriented, component-based environment for developers and offers standardized ways to manage the software lifecycle. These capabilities greatly increase the value of a wide range of computers and devices that use the Java™ platform.

Formed in 1999, the OSGi Alliance focused initially on solutions for the Embedded Java and networked devices markets. As a result OSGi technology has been implemented and deployed in products and solutions throughout the world and across a range of markets. Today, OSGi technology also enjoys widespread acceptance in the Open Source community, as demonstrated by the Apache Felix and Derby projects, the Eclipse Callisto, Equinox and Corona projects, OSCAR, Knopflerfish, and others. As a result the core OSGi technology is now increasingly prevalent in the Enterprise, and it is also seen as the key component of a next generation Java Service Platform that enables the dynamic deployment of Web 2.0 services and Mashups.



more..

Monday, September 24, 2007

Apache ServiceMix is now an official ASF project

Apache ServiceMix
is an extensible messaging bus for service integration, mediation and
composition and its related components. ServiceMix provides a JBI 1.0
ESB and component suite.

The ASF board has just approved its graduation which means that the project is now fully endorsed by the ASF.

Development of the next major version has already began and will be based on OSGi as a container and deployment platform and Apache Camel for the Enterprise Integration Patterns, in addition to Apache ActiveMQ for the JMS message broker and Apache CXF for the web services framework.

original post

Tuesday, September 18, 2007

Scaling Out Like Technorati (Good Interview)

A very good interview discussing scalability of Technorati.
interview with David Sifry , interviewer John Newton
http://newton.typepad.com/content/2007/09/scaling-out-lik.html

Monday, July 02, 2007

Stripes vs. Struts

Stripes was born out of my ongoing frustration with the lack of a high quality, easy to use web framework. Sure, Struts has its good points, but there are a lot of small things that really add up. A lot of small things that you learn to work around, and live with, without realizing how unproductive it's making you.

Up until recently it would have been difficult to create a framework that was better-enough to warrant competing with Struts. And with JSF on the horizon (perpetually?), and other web frameworks in play (WebWork, Tapestry, Wicket) some might question the rationale behind yet another framework. But with Java 1.5 and Servlet 2.4 I think the time has come. The rationale is plain and simple - I wanted a web framework that made it easy, no, fun, to write web applications in Java. The best way to demonstrate is perhaps by a comparison with Struts.

more...



Tuesday, June 26, 2007

Google Scalability Session Report

In a blog post, Microsoft's Dare Obasanjo shared his notes on a session given by Jeff Dean from Google at the Google Seattle Conference on Scalability, "MapReduce, BigTable, and Other Distributed System Abstractions for Handling Large Datasets". According to Dare, the talk covered the three main elements of Google's massively scalable architecture: GFS (the Google File System), MapReduce, an infrastructure capable of processing large datasets in parallel, and BigTable, Google's distributed store for structured data.

more....

Sunday, June 24, 2007

Presentation: Rod Smith - Mash-ups Meet the Enterprise

Posted by Stefan Tilkov on Jun 23, 2007 02:47 PM

In this presentation recorded at JAOO, IBM's Rod Smith discusses how technologies such as Wikis are combined with Web services and Atom and RSS feeds to form mashups, enabling the next wave of DIY-IT by combining the flexibility of user-oriented information architecture provided by active content with that of content-in-flight to provide an easy-to-use end-user integration platform.

Topics covered include IBM's customers' take on Ajax, blogs, syndication and the "programmable web", and the degree to which these Web 2.0 technologies can and should be adapted for enterprise scenarios.

Rodney is a Distinguished Engineer and the VP of Emerging Internet Technology at IBM, responsible for leading technological innovation in the Internet software space and guiding it into industry standard specifications. He advises on investment and partnering opportunities and is the lead negotiator and technical strategist in negotiations with numerous companies in the technology arena.

Watch the full presentation (28 minutes).

original post

Sunday, June 17, 2007

AWT vs Swing

When developing a Java program it is important to select the appropriate Java Graphical User Interface (GUI) components. There are two basic sets of components that you will most likely build your Java programs with. These two groups of components are called the Abstract Window Toolkit (AWT) and Swing. Both of these groups of components are part of the Java Foundation Classes (JFC).

more...

Friday, June 08, 2007

Digging Deeper Into The Myths of Ruby vs. Java

Stuart Halloway of Relevance recently wrote a series of blog posts on "Ruby vs. Java Myths". The series was prompted after he switched gears from working on a green field Ruby project back to a well established Java project. During the course of several days Halloway looked at several "myths":

more...

Thursday, June 07, 2007

An Introduction to JSON

by Daniel Rubio
02/28/2007
Abstract

Web services are practically synonymous with XML, the payload format used for communicating between client and server. However, the application architecture imposed by the appearance of Ajax and REST techniques has forced many to contemplate alternatives like JavaScript Object Notation (JSON).

JSON has come to the attention of Web service providers as a lighter and more friendly format for Web services clients in the form of a browser, or what would essentially be an Ajax-enabled application accessing RESTful Web services.

This article addresses why JSON has gained traction in Web services design, including its main benefits and constraints as an alternative to XML. It also provides an in-depth look at how to easily produce JSON output in Java Web services, accompanied by a corresponding Web service client consuming JSON.

more...

Wednesday, June 06, 2007

Interview and Book Excerpt: RESTful Web Services


Today, InfoQ publishes a sample chapter from RESTful Web Services, a book authored by Leonard Richardson and Sam Ruby. The book covers the principles of the REST style, and explains how to build RESTful applications using Ruby on Rails, Restlet (for Java) and Django (for Python).

On this occasion, InfoQ's Stefan Tilkov had a chance to talk to the authors about their motivations for writing this book and their views on REST and Web services.

interview url  

Download sample Chapter

RESTful Web Services

When to Use REST

Architects and developers need to decide when this particular style is an appropriate choice for their applications. A RESTFul design may be appropriate when

* The web services are completely stateless. A good test is to consider whether the interaction can survive a restart of the server.

* A caching infrastructure can be leveraged for performance. If the data that the web service returns is not dynamically generated and can be cached, then the caching infrastructure that web servers and other intermediaries inherently provide can be leveraged to improve performance. However, the developer must take care because such caches are limited to the HTTP GET method for most servers.

* The service producer and service consumer have a mutual understanding of the context and content being passed along. Because there is no formal way to describe the web services interface, both parties must agree out of band on the schemas that describe the data being exchanged and on ways to process it meaningfully. In the real world, most commercial applications that expose services as RESTful implementations also distribute so-called value-added toolkits that describe the interfaces to developers in popular programming languages.

* Bandwidth is particularly important and needs to be limited. REST is particularly useful for limited-profile devices such as PDAs and mobile phones, for which the overhead of headers and additional layers of SOAP elements on the XML payload must be restricted.

* Web service delivery or aggregation into existing web sites can be enabled easily with a RESTful style. Developers can use technologies such as Asynchronous JavaScript with XML ((Ajax)) and toolkits such as Direct Web Remoting (DWR) to consume the services in their web applications. Rather than starting from scratch, services can be exposed with XML and consumed by HTML pages without significantly refactoring the existing web site architecture. Existing developers will be more productive because they are adding to something they are already familiar with, rather than having to start from scratch with new technology.

A SOAP-based design may be appropriate when

* A formal contract must be established to describe the interface that the web service offers. The Web Services Description Language (WSDL) describes the details such as messages, operations, bindings, and location of the web service.

* The architecture must address complex nonfunctional requirements. Many web services specifications address such requirements and establish a common vocabulary for them. Examples include Transactions, Security, Addressing, Trust, Coordination, and so on. Most real-world applications go beyond simple CRUD operations and require contextual information and conversational state to be maintained. With the RESTful approach, developers must build this plumbing into the application layer themselves.

* The architecture needs to handle asynchronous processing and invocation. In such cases, the infrastructure provided by standards such as WSRM and APIs such as JAX-WS with their client-side asynchronous invocation support can be leveraged out of the box.

more...

Saturday, June 02, 2007

Google Gears: Enabling Offline Web Applications

Google Gears is an open source browser extension that lets developers create web applications that can run offline.


Features

Google Gears consists of three modules that address the core challenges in making web applications work offline.

LocalServer LocalServer
Cache and serve application resources (HTML, JavaScript, images, etc.) locally
Database Database
Store data locally in a fully-searchable relational database
WorkerPool WorkerPool
Make your web applications more responsive by performing resource-intensive operations asynchronously

Learn more »

Wednesday, May 30, 2007

How I Explained REST to My Wife

Nice Blog Post simply explains REST in a form of funny discussion.

go there

Sunday, May 27, 2007

REST Battles SOAP for the Future of Information Services

There has been some subterranean discussion in the content management standards arena about what is the best way to support the interoperability of content services with applications. Should vendors support content services through the myriad of web services support layers that have been developed over the last decade? Or should we take a leap into the future with the simple REST architecture used by Amazon, Yahoo, Google and dozens of other web properties? The answer can affect how applications, developers and even consumers view information services. I don't think it is going to be as simple as let's do both.

more...

Saturday, May 19, 2007

Mashups: The next major new application development model?

Posted by: Joseph Ottinger on May 17, 2007 DIGG
The Web continues to drive the evolution of innovation in software these days with REST challenging SOAP, RSS challenging notions of traditional content silos, and widgets putting a easily consumable, visual "face" on our service-oriented architectures. Our services and even our back-end functionality is getting increasingly atomized and made portable. In fact, the rise of widgets, gadgets, and badges on the Web is facilitating the low-barrier integration of very high value functionality into their Web apps in literally just a few minutes by almost anyone.

This trend of ad hoc remixing services and content into new Web apps has been dubbed "mashups" and has generated over 2,000 major new Web apps alone in the last couple of years according to Programmable Web. Users are even doing this themselves en masse in their own blogs, wikis, and social networking profiles proving both the ease of use and dramatically driving the demand for Web parts that can be integrated with little more than a cut-and-paste.

Are we witnessing a sea change in consumption of server-side services, integration models, and the rise of a new high speed, agile application development model? It appears so and the do-it-yourself era of software might be upon us as the Web turns into a sort of giant Home Depot of off-the-shelf parts and services. Not sure this is true? Check out the thousands of ready-to-use components available at WidgetBox, most of them connected to back-end Web services to provide functionality.

Over at ZDNet, the new article "Mashups: The next major new application development model? " explores the challenges and major market opportunities in what might be a generational change in our apps.


TheServerSide Discussion URL

original URL