» tagged pages
» logout

sorted by: recent | see : popular
Content Tagged with engineering + architecture

The Architecture Layer

Contemporary software engineering models include many loosely-defined layers. Database developers might help with other layers, but for the most part a database administrator’s domain is the persistence layer.


  • Presentation

  • Application

  • Business Logic

  • Persistence (also called Storage)

The Daily WTF has an article on The Mythical Business Layer makes the case for not separating the business layer and the application layer:

A good system (as in, one that’s maintainable by other people) has no choice but to duplicate, triplicate, or even-more-licate business logic. If Account_Number is a seven-digit required field, it should be declared as CHAR(7) NOT NULL in the database and have some client-side code to validate it was entered as seven digits. If the system allows data entry in other places by other means, that means more duplication of the Account_Number logic is required.

It almost goes without saying that business logic changes frequently and in unpredictable ways. The solution to this problem is not a cleverly coded business layer. Unfortunately, it?s much more boring than that. Accommodating change can only be accomplished through careful analysis and thorough testing.

I will call this merged business/application layer the “functional layer.”

The serious scaling requirements posed by most applications these days call for partitioning, clustering, sharding or some other term for “dividing up the data so it does not become the bottleneck”. Enter the “architecture layer”.

“Wait a minute,” I hear you asking. “Isn’t that just the persistence layer?”

Yes and no. To me, there’s a difference between the storage and the architecture of said storage. The database schema for storing a user profile is a persistence layer issue. Figuring out which database instance to go to is an architecture layer issue.

This is an important distinction for me. Many folks are coding the architecture layer directly into the functional layer. A “save_profile()” API function might call an ORM to deal with the persistence, or it will have MySQL (or other database) connection handling and queries. However, the database will grow, and at some point you will find yourself wanting to split the data [more].

This type of information, like the presentation layer, needs to be separate. Why should the application care whether save_profile(’Sheeri’,'hair color’,'blonde’) accesses database1 or database2? More importantly, why should there be major code changes to the functional layer if the architecture changes? Just like no functionality has changed when you change your website color from blue to red, there is no functionality change when you go from splitting data between 2 database servers to splitting among 3, or 10.

For me, the persistence layer is about how the data is stored. Which, explicitly and for the record, I also believe should be separate from the functional layer — if you store hair color and eye color in one table or 2, the functionality of the application has not changed; all that’s needed is a change in how that data is stored and retrieved.

The architecture layer is all about where the data is stored. Early forms of the architecture layer are configuration files, though most would not call that a “layer”. Database administrators should be able to change the architecture of the database system without requiring mucking about in the application’s functional code.

Thoughts?

MySQL: Planet MySQL

Building a Better Data Model

As Information Systems get more complicated and specialized, Data Analysts find themselves in need of a better way to express more information in their models. Whether we are designing a cutting-edge transactional system or a data warehouse, we rely on our user community to define the business rules that dictate and validate the data.

8 Vote(s)

businessrules: Business Rule Platform - powered by BIZense

Business Rules and Object Role Modeling

To capture fast-paced, complex businesses, data modelers must consider methods that go beyond traditional ER diagramming. In spite of remarkable progress in computing technology, many businesses are still struggling with the problem of modeling and accessing data. Although faster hardware and graphical interfaces do help somewhat, they do not address the problem's fundamental cause. A business is

11 Vote(s)

businessrules: Business Rule Platform - powered by BIZense

MoDisco Home page

MoDisco (for Model Discovery) is an Eclipse GMT component for model-driven reverse engineering.

Eclipse: del.icio.us/tag/eclipse

[from amaah] Reflections on the I-35W bridge

the nature of infrastructure is a challenge to politics. Spending money to maintain a bridge means taxes with nothing to show the voters (except traffic obstruction); no-one ever named a paint job or a repair after a local hero, but buying a big new piece

User:jeyrb: del.icio.us/network/jey

[from amaah] They said it couldn't be done

Five years ago, the ever-inventive structural engineer Cecil Balmond worked with the Japanese architect Toyo Ito to shape one of the most exquisite and revolutionary buildings of recent times - a temporary summer pavilion for the Serpentine Gallery in Lon

User:jeyrb: del.icio.us/network/jey

Why Open Source Works (ACM: Ubiquity)

Interview with Steven Weber author of 'The Success of Open Source'. Gives some interesting perspectives. Looking at open source from the hype perspective it gives room for many explanations. Weber poses that the core is GPL, which makes open source tick.

License:GPL: del.icio.us tag/gpl

HelenOS

The HelenOS project is an effort to develop a working operating system. HelenOS supports SMP, multitasking, and multithreading on 32-bit and 64-bit, little-endian and big-endian processor architectures, among which are AMD64/EM64T (x86-64), IA-32, IA-64 (Itanium), 32-bit MIPS, 32-bit PowerPC, SPARC V9, and Xen.

[from chimezie] What engineering has in common with manufacturing and why it matters - AC

"The parallels with manufacturing allow us to borrow from results in manufacturing theory to understand how to better structure our software processes, and the teams involved." - Very useful, well-written anlogy

User:jeyrb: del.icio.us/network/jey

HelenOS project

The HelenOS project is an effort to develop a working operating system according to HelenOS specifications. HelenOS uses its own microkernel written from scratch and supports SMP, multitasking and multithreading on both 32-bit and 64-bit, little-endian an

opensource: del.icio.us tag/opensource

Eclipse now and in the future - an interview with Mike Milinkovich

An interview with the Executive Director of the Eclipse Foundation, home of the popular Java IDE and tool platform.

Eclipse: del.icio.us/tag/eclipse