Core Architecture function is not a new concept in many software companies. Systems which support a business are engineering products which ideally are built on top of many building blocks. The more the complexity of systems, more you need common building blocks which act as ‘Services’ or ‘Micro Services’, allowing new applications to be built quickly with them. While many companies have come to learn the value of establishing a core architecture function, several organizations have not yet realized the benefit of investing in such a structure. The reasons can be different depending on the company history and culture.
Why do we need a Core architecture group?
This model facilitates cost effective application development by promoting re-usability, and reducing redundancy. Often groups within a company are seen solving the same problems over and again in different ways. While autonomy and reinvention is necessary for creativity and improvement, it can be expensive in many cases when instead of an existing solution being reused, it’s built all over again. In this age of Agility in producing digital products, reinventing the wheel often means lag in time-to-market with high upfront cost in development. Organizations when are totally reliant on automation and digitization, having building blocks or services which provide a ‘platform’ for quick application development is essential for nimbleness and speed to market.
In this age of Agility in producing digital products, reinventing the wheel often means lag in time-to-market with high upfront cost in development. Organizations when are totally reliant on automation and digitization, having building blocks or services which provide a ‘platform’ for quick application development is essential for nimbleness and speed to market.
It is also important that today’s digital products address the concerns of scale upfront. Products have to be built to scale, and a core dedicated architecture function is better positioned to streamline the architecture of applications in that direction. Development leads can use the guidance and assistance of dedicated architecture functions in addressing these concerns.
Software engineering and architecture standards, guidelines have to be established, shared, ensured and enforced as needed. Technology leaders who are empowered to make executive decisions must develop and communicate certain high level coding and architecture standards and practices, which keep the underlying code consistent, standard and of high quality.
What are the responsibilities of a core architecture group ?
A Core architecture group is a highly functional group which interacts and collaborates with all the stakeholders. The responsibilities will entail both strategic and tactical.
- Understand thoroughly the business capabilities of the organization, how information flows.
- Map and list all the core services that cut across all business capabilities of the company.
- Communicate on an ongoing basis the required services and their value.
- Discover already existing core / common services by collaborating with different teams. There could be multiple flavors of the same service, however bringing them all to the front will likely cause some of them to be reused. Those which are the most used can be narrowed down as final core services. Hence create a common repository of all these services, catalog and document them. Share the knowledge and documentation, provide links via source control, shared libraries or API endpoints.
- Plan and build new core services and publish.
- Evangelize core services, be the facilitator of systems integration of these services. This is a challenge in itself. It might be easier to build services, however harder to get them integrated into existing systems- an easier strategy then is to integrate services in new applications.
In addition as the team grows and matures, it can take on other architecture functions like:
- Ensure application and systems architecture will be able to scale via reviews, testing and metrics. Consistently work with development leads in that direction.
- Establish and ensure coding and architecture standards.
The function can extend to encompass more tenets of architecture like performance, resilience, reliability and more.
How do you go about building a core architecture group ?
Execution is key- if a core architecture function is integrated well with the day to day development operations, a solid foundation is built for systems for the future.
- If budget allows it, form a team of software architects and engineers dedicated to this function. This can be a very small group to begin with, even starting with one expert architect can be good. And then this can be grown to a bigger group as needed.
- If not, appoint technical leads , lead developers or technical managers as part time architects who take on the job of core architecture. There might be challenges with time management with day to day work, however this is a collective effort. Individual responsibilities can be assigned. These responsibilities and tasks are not outside of mainstream development work, they get integrated into the development pipeline and followed up on. This way there is full accountability. In fact a structure like this can be an advantage because systems integration is easier, the managers and leaders are already involved in developing the core services themselves.
Technology leadership of a company has to be vested in the idea of a Core architecture group. This is critical to the success of Systems that support the business functions. Product definition, product development and systems architecture all need to work together towards building products which scale and stand the test of time.