I have been a software architect for the past 10 years or so. During that course of time I have discovered some guidelines which i fervently adhere to whenever I am architect out any new component or a system.
Typical architectures are aligned to n-tier architecture. I work sub-divide my guidelines under the following broad categories:-
- User Interface
- Business Tier
- Data Access Tier
I have seen developers and architects constantly jump on the latest technology bandwagon without determining if the product/technology fit their requirement. IT is a business enabler. It can help business achieve major breakthroughs. However we should first determine the business requirement and then identify an appropriate technology which helps achieve the business goals. The tendency is more to look at the latest shining tool and try to force fit it into the business requirement. Architects/developers need to assess ‘fit-for-purpose’ first and evaluate technology options later.
Develop technology capabilities within your enterprise
Every organization has a standard set of technical services or capabilities it desires to keep its business running. However 9 out of 10 times, whenever the organization embarks on a new development project it starts developing that capability from scratch. So what capabilities I am talking about?
Authentication – The most fundamental requirement for an application and I am sure a lot of new applications believe in developing this from scratch. It would make more sense to have a centralized authentication engine with all the bells and whistles to adhere to the enterprise security standards.
Single Sign On – Today’s applications do not work in silos but have dependencies with other enterprise applications. In some cases, the organization could be a service provider supporting its customers with a plethora of offerings supported by multiple business applications. It is important to provide the customer with a ‘unified view’ even if the underlying applications are multiple applications. Page navigation between multiple applications needs to appear seamless without the need for resubmitting authentication credentials. Also there is need to integrate applications between enterprises to support a seamless experience. So we need single sign on solutions within an enterprise as well as a federated solution across enterprises.
Content Management – All enterprises are moving towards paperless documentation. A key component in achieving that is using a content/document management repository. Instead of creating a custom document management solution per application, it makes more sense to create a shared content/document management service within the enterprise.
Communication Management – All enterprise applications need to communicate with their end users. The communication could be in the shape of email, SMS, outbound voice etc. Enterprises need to standardize the service providers and use economies of scale to drive efficiency. Having this centralized will also assist in driving better CRM practices. Also in case of service provider change it would be easier to implement in a single location instead of each and every affected application.
API Management – Enterprises are connected together in this digital world. It is important for enterprises to define, standardize and manage APIs. It is essential to create a standardized gateway to its inward/outward facing APIs. The gateway at the minimum should assist the organization in adhering to its defined Quality Of Service standards. Irrespective of whether the APIs are monetized or not proper API management is essential.
To me the items listed above form the building blocks of enterprise business capabilities that provide a strong platform for an enterprise to ACT.
In the next part I will cover User Interface guidelines.
Featured image courtesy of pixabay.