Creating Application Architecture

AppArch

Creating an enterprise application involves many decisions. There are so many options, and with each decision, number of other options emerge. One way to reduce the scope to deal with is to organize the application into layers. For each layer in an application, there are different design considerations. These consideration and what impact each choice has, is one of the hardest tasks in architecturing enterprise software. Many things can be learned from textbooks although they are limited to a specific context, other things are learned from doing – experience. Sometimes hard and painful experience. While things look to be easy enough, when things start to operate with other things and scale, what sounded easy is actually not. In my 11th Lecture in the Design and Implementation of Software course, the goal is to look at the complete design from web layer to the database and how all the pieces come together, Application Architecture.

In the first section we look at the big picture and design consideration for each of the three principal layers. They are different concerns and considerations to think about. In the Web Layer its all about keeping the web presentation logic from the domain layer, and deciding what is on the gray area. We have to understand different client types. While back in them old ways people would run Windows native clients that accessed a server, today we have multiple of choices for clients. Sometimes we don’t even decide.

Native clients are one type, embedded another and interactive web application the third. All of these have similar ways to access the enterprise application. There is clear difference between the client and the server. API calls supply the content or the resources needed for the client. Note that I don’t make distinction between a native application (like Android or iOS or Windows) and interactive web sites. The web site needs to access the content with JavaScript.  The last category of client type to mention is a simple servers side web site using a templating engine that generates HTML for a web browser.

Then there is different type of content. Content is not just content. A web site may have static content, editable content and dynamic content. The static content is any graphical asset that you might get from an graphical designer. Examples are logos, backgrounds, themes and things like that. These are not edited frequently and could be done all at once, for example if the web site changes themes. Then there is editable content. This content that the operator wants to edit, possible frequently. If your web site has lots of editable content, consider using a Content Management System. The last category is dynamic content. This is the domain data that is provides by the data in the database and any domain specific logic that manipulates the data.

For the domain layer the main consideration are where to put the domain logic. Two choices are presented. First is using an application server that is just a container for code. Other systems can look of the code and call it. EJB contains is an example of this. Most application servers (at least in the Java world) have web servers built in, so they do not need to be distributed. Another way is to use lightweight container. An example of that is the Spring application context that we have used in the course.

The considerations of the data source layer depend partly on the domain. The key is to allow structured access to the database. In the lecture we look at table gateways, which is a very common choice in enterprise software. Other choices are using Object-Relational Mapper tools, like Hibernate. These tools are by now very stable and can actually improve the data access due to the optimization that has been built in.

The slides and lecture video can be found here: Lecture L11 Application Architecture 

Cover image by: wagaboodlemum
flickr.com/photos/72058777@N03/

 

The IBM PC Turns Thirty

 

On August 12th 1981, IBM introduced the IBM model 5150 or the IBM PC. Big Blue launched an ad champaign featuring the Tramp. This was a serious PC for the serious business man. The impact was huge. IBM created the PC industry. The most interesting fact is that IBM, a mainframe company, could actually pull this off. If we look at corporate history, it is rare that corporation can go into totally new type of ventures. In fact, this was really a remarkable feat. But as it turns out, the birth of IBM PC was totally an accident.

Consider the market prior to the IBM lunch. MITS introduced Altair 8800 in 1975. It was based on the new Intel 8080 Microchip. This landmark computer was featured on the cover of Popular Electronics. This was the issue that inspired Bill Gates and Paul Allen to go into the software business, creating a BASIC interpretor for the machine. Although the Altair was very primitive by modern standards – you had to assemble it yourself, it ignited fire in all those computer hobbyist that would love to have their own computer.

In the 1970s, the only way to get your hands on a computer was to get access to a time-sharing facility. These were available at many univerisies, and some times had restricted access. The term “hacker” was used to describe those enthusiast that would steal access to machines just for the joy of using the machine. Somewhat romantic term that would later get a more negative meaning.

In the late 70s, several personal computers emerged and the momentum was building. At the West Coast Fair in 1977, Apple, with Steve Jobs and Woz, introduced the Apple II and it was clear that something was happening. IBM, the computer giant, the makers of serious computers for the business, watched this from a distance. Clearly this was the market for hobbyists, not to be taken seriously by business. But Big Blue management did watch this development carefully.

In 1980, IBM management approved a project to create a personal computer. This task was given to a small team that would get one year to complete the task.  So the team went to Boca Raton, Florida and worked on the new computer. The team did several things different from the traditional IBM corporate way of building computers. One thing was that this team was a long way from headquarters and the corporate culture. Another was that given the time restrictions the team could not wait for IBM engineers to create parts that would fit into the PC. So the chip was licensed from Intel, the floppy disk drive from Tandem and so on.

The operating system, PC-DOS was licensed from Microsoft. The software company also got rights to sell the system to other computer makers. This created a platform for software makers to create programs. This was in line with Microsoft’s focus on providing computer languages like BASIC.

One remarkable thing that IBM did was to publish all the specification documents. So people could actually read how the computer was made. Everything was specified. This resulted in a new industry. Anyone could start creating add-ons and accessories to the IBM PC. And soon, the clones started to appear. A software industry was born. With each release of IBM PC, another computer company would release a compatible machine little later.

Eventually, the success of the PC as an industry standard, resulted in the downfall of the IBM PC. After the computer had become a success, IBM management started to make the decisions on releases of updates. IBM management wanted to use the same practices as they used in the mainframe business, delaying new models to get most out of the current one. IBM decided when the move to new model of Intel chips. Finally, the industry didn’t wait for IBM to lead anymore. Compaq released the Compaq Deskpro 386 in 1986. This was first PC that IBM did not initiate.

The impact of the IBM PC was huge. The PC gives use lessons in corporate management, both it’s birth and death. It’s not that corporate management can’t create good products and make good decisions, it’s about how one corporate culture, in this case mainframe culture, can’t easily be applied to an industry that needs a different culture, in this case PC culture. And it proved that open platform builds industry standards.