“Over the past twenty or so years I have been involved in many software development projects, code reviews and software factory implementations. Although I had stretched the virtues of good software architecture for decades, it wasn’t until a series of recent event, that I really started re-valuing of having sound software architecture in place. And to mea well-defined software architecture merely describes the patterns used, the layers applied the types of classes in these layers, and how they collaborate. Primary goal would be to create structure and a clear separation of concerns in your application code.” – Shoogend
The architects focus plays a very important role in IT success of enterprises. Currently thousands of production servers run in the data centers of enterprises without architects. So why do we need architects now? What do they do? How do they add value? And who is qualified to become an architect?
Why do we need them?
The complexity of technology and products that offers today demands the guidance and design expertise of knowledgeable and experienced IT professional. Infrastructure, data and applications are three critical components of all data centers to keep business alive and running. Integration of infrastructure, application development and database and management tools requires the skills and leadership beyond those of engineers and developers. Architects are needed beside the product road maps, so IT professionals or system engineers can build the infrastructure, and developers or software engineers can focus on building and developing applications.
Organizations must realize the need for architects, their roles and responsibilities in the process, as well as recognize their value first before they recruit architects to help build the future.
What Do They do?
There are several kinds of architects in an enterprise: Enterprise architects, Infrastructure architects, Software architects and Line-of-Business architects.
The efforts of enterprise architects pan out to ensure that they cover architecture from an enterprise perspective, cross-organizationally, and across architectural domains such as business, application, infrastructure, and data. Enterprise architects lead infrastructure architects, software architects and line-of-business (LOB) architects to plan and build the blue print for the enterprise.
Infrastructure architects build infrastructures as presented by enterprises architects, to implement and maintain reliable infrastructure services for business.
Software architects usually are the experienced developers who are able to help perform strategic thinking from a software-development perspective; deal with systems, boundaries, interfaces and interactions; explain high-level design choices; and communicate with stakeholders.
The LOB architects are the links between the needs of the LOBs and those of the developers. They often build the solutions for the business.
How Do They Add Value?
Each kind of architect can provide value through the particular contribution to business and business processes. Each serves as the bridge between business, engineers and developers. Architects must be able to contribute to add value to the business and IT processes.
Benefits for Developers: If organization has software architecture in place, this will offer some rather relevant benefits, which include
- High productivity. It is easier to add new features to existing software, since the structure is already in place and the location for every new piece of code is known beforehand.
- Better code Maintainability. It is easier to maintain existing software as the structure of the code is visible and known, so it is easier to find bugs and anomalies.
- Higher adaptability. New technical features such a different front ends or adding a business rule engine are easier to achieve as your software architecture creates a clear separation of concerns.
- Hype agnostic. It will allow you to see hypes and fads in the industry or which are a lot in the light of your current structure and to fit these hypes and fads in if so required.
Who IS Qualified to Become One?
The professional qualifications of an architect include education, knowledge and experience in IT, and more importantly an understanding of technologies, tools and intentions. Most importantly, architects understand the business and its processes.
Cloud computing promises to increase the velocity with which applications are deployed, increases innovation and lower costs, all while increasing business agility. Sun takes an inclusive view of cloud computing that allows it to support every facet including the server storage, network and virtualization technology that drives cloud computing environments to the software that runs in virtual appliances that can be used to assemble applications in minimal time. This white paper discusses how cloud computing transforms the way we design, build, and deliver applications and the architectural considerations that enterprises must make when adopting and using cloud computing technology.
Cloud computing can be the ability to rent a server or a thousand servers and run a geophysical modeling application on the most powerful systems available anywhere. It can be the ability to rent a virtual server, load software on it, turn it on and off at will, or clone it ten times to meet a sudden work load demand. It can be storing and securing immense amounts of data that is accessible only by authorized applications and users. It can be supported by a cloud provider that sets up a platform that includes the OS, Apache, VS, and a MySQL database, Perl, Python and PHP with the ability to scale automatically in response to changing workloads. Cloud computing can be the ability to use applications on the internet that store and protect data while providing a service – any thing including email, sales force automation and tax preparation. It can be using a storage cloud to hold application, business and personal data. And it can be the ability to use a handful of web services to integrate photos, maps and GPS information to create a mash up in customer when browsers.
Nature of Cloud Computing:
Cloud computing builds on established trends for driving the cost out of the delivery of services while increasing the speed and ability with which services are deployed. It shortens the time from sketching out application architecture to actual deployment. Cloud computing incorporates virtualization, on-demand deployment, Internet delivery of services, and open source software. From one perspective, cloud computing is nothing new because it uses approaches, concepts, and best practices that have already been established. From another perspective, everything is new because cloud computing changes how we invent, develop, deploy, scale, update, maintain and pay for applications and the infrastructure on which they run.
Virtual machines have become the prevalent abstraction and unit of deployment – because they are the least common denominator interface between service providers and developers. Using virtual machines as deployment objects is sufficient for 80 percent of usage, and it helps to satisfy the need to rapidly deploy and scale applications.
Virtual appliances virtual machines that include software that is partially or fully configured to perform a specific task such as a web or database server, further enhances the ability to create and deploy applications rapidly. The combination of virtual machines and appliances as standard deployment objects is one of the key features of cloud computing.
The biggest challenge in cloud computing may be the fact that there is no standard or single architectural method. In fact there are few definitions of the cloud computing concepts that are fully accepted. Therefore its best to view cloud architectures as a set of approaches each with its own examples and capabilities.
A cloud computing system is a set of IT resources designed to be allocated ad hoc to run applications rather than be assigned a static set of applications as is the case in client/server computing. In a cloud computing environment a user requests information from an application. The cloud computing environment must then broker resources to run that application.
One of the most distinguishing characteristics of cloud computing architecture is its close dependency on the hardware components. An online application is just a simple application that could be launched in different servers byut when the application is considered with cloud computing, it will require massive data centers that will ensure the processes are done as expected and timely.
Data centers for cloud computing architecture are not your run-of-the mill data processing centers. It’s composed of different servers with optimal storage capacity and processing speed. They work together to ensure that the application will be operating as expected. The area is usually in a highly controlled environment where it would be constantly monitored through various applications and manually checked for actual physical problems.
Cloud computing is new, its potential is exciting and its applications are limitless. By guaranteeing that cloud resources link effectively with virtual desktop capabilities, enterprises can get the most out of cloud services that are available from third parties. They can also efficiently redirect computing centers into a cloud model for maximum performance and cost effectiveness.
The simplest model of cloud computing can be created using a pool of servers that have been virtualized using an application tool like the web services directory, UDDI or a network tool used for.
On-demand Pay-By-Use Model:
The on-demand self-service pay-by-use nature of cloud computing is also an extension of established trends. From an enterprise perspective the on demand nature of cloud computing helps to support the performance and capacity aspects of service level objectives. The self-service nature of cloud computing allows organizations to create elastic environments that expand and contract based on the workload and target performance parameters. And the pay-by-use nature of cloud computing may take the form of equipment leases that guarantee a minimum level of service from a cloud provider.
Virtualization is a key feature of this model. IT organizations have understood for years that virtualization allows them to quickly and easily create copies of existing environments – sometimes involving multiple virtual machines - to support test, development and staging activities. The cost of these environments is minimal because they can coexist on the same servers as production environments because they use few resources.
New applications can be developed and deployed in new virtual machines on existing servers, opened up for use on the internet, and scaled if the application is successful in the marketplace. This lightweight deployment model has already led to a “Darwinist” approach to business development where beta versions of software are made public and the market decides which applications deserve to be scaled and developed further or quietly retired.
Cloud computing extends this trend through automation. Instead of negotiating with an IT organization for resources on which to deploy an application, a compute cloud is a self-service proposition where a credit card can purchase compute cycles and a web interface or API is used to create virtual machines and establish network relationships between them. Instead of requiring a long term contract for services with an IT organization or service provider, cloud work on pay-by-use or by-by-the–sip model where an application may exist to run a job for a few minutes or hours or it may exist to provide services to customers on a long term basis. Compute clouds are build as if applications are temporary and billing is based on resources consumption- CPU hours used, volumes of data moved, or gigabytes of data stored.
The ability to use and pay for only the resources used shifts the risk of how much infrastructures to purchase from the organization developing the application to the cloud provider. It also shifts the responsibility for architectural decisions from application architects to developers. This shift can increase risk, risk that must be managed by enterprises that have processes in place for a reason and of system, network and storage architects that needs to factor in to cloud computing designs.