A Perspective on Software Architect in PaaS

April 17, 2017

There is no single job description for everyone. Depending on the current stage of your business and the people around you, you will have to keep seeking clarity in your role and finding focus in your job. If you would like to serve in the area of Platform as a Service (PaaS) as a software architect, you are no exception. You will need to write down your job description in a living document.

The consumer in PaaS is normally a software developer, whether this consumer is internal or customer facing. The platform provides a set of predefined services and tools that the consumer may choose to use. These include various database options, messaging options, compute options, networking options, monitoring tools, and developer tools. The consumer builds their business applications with these services and deploys them onto the cloud infrastructure. The consumer does not worry about managing or controlling the underlying cloud infrastructure. The platform provides some level of quality attributes that the consumer needs, such as availability, performance and scalability, security, and etc..

A software architect in PaaS collaborates with the consumer (developer) to craft the right architecture for their business problem at hand. The architect defines, documents, and communicates the architecture and the services to the consumer and the management. The architect identifies and interacts with stakeholders to make sure their needs are being met. Not all architects hold the same view of what a software architect should do. The Software Engineering Institute from Carnegie Mellon University summarizes some of their views and states a list of primary duties of a software architect.

Depending on the size, complexity, and maturity of your platform, for a small or medium-sized platform, you will find yourself taking both the product owner and the lead developer roles. You will research the business problem from a technical perspective, understand your consumer (developer), and define the requirements. You will then define and communicate the architecture to meet your consumer’s needs for building their applications. In a larger setting, two separate roles may be required - one role (platform architect) to define the functional solution and architecture of the platform and a second role (lead developer) to make the technical design choices that conform to the architecture, coding standards, operating infrastructure, and development environments.

For a small or medium-sized platform, you will focus on “what to solve?” and “how to solve?”, whereas the lead developer focuses on “how to build?”. For enterprise platform, a (technical) product manager is dedicated to handle the definition of your platform services, i.e. “what to solve?”.

As a software architect, you will find yourself in the intersection between business, developer experience, and technology.

Business

You comprehend the business problem that drives the building of a platform service. You get buy-in from management to build organizational support for the proposed architecture.

Developer Experience

You are the voice of your consumers (developers) of the platform. You are passionate about your consumers and the specific problems they are trying to solve. You regularly talk and get feedback from them. You advocate best practices and relate them to different services and options available in the platform. You counsel teams and individuals to understand and effectively implement the proposed architecture.

Technology

You understand in depth, analyze, and select current and emerging technologies that are pertinent to the platform. You create and articulate architectural and technical visions for the platform.