Dhananjay Nene is a Consulting Software Programmer and Architect. Dhananjay is a DZone MVB and is not an employee of DZone and has posted 18 posts at DZone. You can read more from them at their website. View Full User Profile

Five Important Trends on the Enterprise Architect's Radar

  • submit to reddit

It is no secret that the internet architectures are influencing enterprise architectures. This post attempts to summarise some of the recent trends in the internet space, which seem to be carrying some momentum sufficient enough to influence the enterprise. So without further ado, these trends are :

  1. REST : The Representational State Transfer architecture style builds on the essential elements of those constructs which made the internet so globally scalable. A detailed explanation of the rationale and strengths of REST are completely beyond the scope of this article. If your job requires you to be continuously aware of emergent trends and whether they fit your enterprise architecture needs – this is the one must explore trend.

    Impact : Web based architectures, Service Oriented Architectures, wide availability and immediate usability of data and processing requests (resources) through simple HTTP URIs and minimal integration effort

  2. Interoperable Cloud : The interoperable cloud is the ability to create a private cloud and also leverage a public cloud. This has been made possible by offerings such as the Ubuntu Enterprise Cloud which allows you to build a private cloud or use a public cloud such as Amazon EC2 while being able to access them using the same set of APIs thanks to open source efforts such as Eucalyptus. This allows you the flexibility of initially using either a private or public cloud and then subsequently shifting to the other, or being able to use both simultaneously.

    Impact : Large servers vs cluster of commodity servers, virtualisation, elastic deployments, flexible hardware procurement / provisioning, infrastructure management in organisational hierarchy.

  3. NoSQL : While I am unhappy with the name, it has stuck. This refers to a set of options now available to store your data unconstrained by many RDBMS requirements (eg. flexible schema, key value pairs etc.). Some of the databases also allow you to store data in a distributed manner over a number of servers with an intent to support high availability in write intense scenarios even as they may require you to move towards eventual consistency. These options increase your manouverability / flexibility as an architect even as they require you to meet a different set of challenges.

    Impact : Relational databases, data storage strategies, data distribution strategies, vertical vs. horizontal scalability, transactionalisation, consistency and availability

  4. Polyglotism : Developer costs now occupy an increasing percentage of total costs, development time is being an increasingly dominant factor for time to market, and ability of software to change and adapt quickly to newer demands is now a critical success metric. One of the solutions is to write different parts of the software in a different languages most appropriately suited for concise and rapid coding as well as supporting quick reaction changes to each part appropriately. Thus it is conceivable to have some of the business rules written in a dsl written using jruby and some of the algorithms written in clojure in a software built on the JEE platform.

    Impact :Development culture and processes, minimum developer skill and scalability, risk management for managing required vs. available skills.

  5. Decentralised processing : Thanks to many developments which are leading to increasingly distributed processing including REST and NoSQL, applications will need to be a set of collaborating network based components (we’ve heard this before with distributed objects as well). However especially given some of the lesser guarantees that such architectures can provide around immediate guaranteed processing, latency issues, distributed control and asynchronous processing, a particular piece of business logic may get satisfied in a staggered fashion across a number of collaborating components. This may increase challenges in terms of currency of available data even as it helps actually deliver on the vision of distributed objects and simplifies individual component development. While asynchronous capabilities such as those supported by MQ series and the like have been used in the enterprise for ages, I do anticipate increasing use of lighter messaging constructs such as PubSubHubbub within the enterprise.

    Impact : Application partitioning, network based components, difficulty in supporting fully synchronous workflows.

From http://blog.dhananjaynene.com
Published at DZone with permission of Dhananjay Nene, author and DZone MVB.

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)


Jack Hung replied on Tue, 2009/11/03 - 3:52am

In my opinion, I would add two more to the Enterprise trends

Dhananjay Nene replied on Tue, 2009/11/03 - 10:23am in response to: Jack Hung


I had chosen to specifically focus on the trends that are treading onto the enterprise space from the internet applications space and also to remain sufficiently language or platform agnostic. Else the count of trends would be substantial.

However would be curious if others can think of other substantial trends which are influencing the enterprise via the internet.


Loren Kratzke replied on Fri, 2009/11/06 - 12:17am in response to: Dhananjay Nene

I think that virtualization could be a candidate as it helps facilitate the Interoperable Cloud and Decentralized Processing items mentioned in the article. I consider this an Internet trend because virtualization is a significant force in the hosting world. As with multicore processing and the threading advantages/challenges that it brings to programming, the resulting ability/requirement to cluster application servers must be considered in all forward looking frameworks.

Artur Sobierajczyk replied on Sat, 2009/11/07 - 5:30am

I don't think REST is a new trend - it's for a few years with us and didn't get massive adoption. In field of programming languages what "internet" uses affects enterprises also - dynamic languages (Python, Ruby instead of Java), functional style (closures in Java). In field of SCMs - distributed SCMs which are a very good tool for some enterprises (with independent teams). What remains the biggest difference between these two worlds is IMHO usage of big "application servers" like JEE with EJBs, which internet completely refuses to use and which is current default for "enterprise" development. It is probably example of your 5th trend.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.