Responsibilities
What will you contribute?
Reporting to the Head of Enterprise Architecture, Lending, the Cloud Services Enterprise Architect defines and designs the cloud-native components and deployment model for hosting financial applications for the Lending business unit. This position is located in Bangalore.
Responsibilities & Deliverables:
Your mandate will be in the context of three types of teams you will be interacting with:
Product teams, each of which delivers a financial application that historically has been sold on-premises but which are on a journey to cloud, in K8s-based deployments. Typically, these are Java applications with legacy architectural impediments.
Want more jobs like this?
Get jobs in Bangalore, India delivered to your inbox every week.
A DevOps/SRE team, responsible for implementing the CI and CD automation code to deploy and operate the applications built by product teams. This automation code is typically written using Ansible, Helm Charts, GitHub actions and AzureDevOps.
Hosting partners that provide and operate IaC platforms to provision the cloud infrastructure: networking, security, observability tooling and application compute (mix of virtual machines and K8s clusters).
In this context, your mandate is to define and govern the implementation of a cloud-native design for cloud services based on the financial applications created by product teams. You are expected to bring an end-to-end service perspective and identify/design any additional components the cloud service may require over and above the specific financial applications themselves.
You are expected to bring strong design skills in Java and a passion for cloud and CI/CD technologies.
In particular, you are expected to:
- Identify the correct Azure and PaaS services that should be used to wire application components together (e.g., networking, load balancers, etc.) and to represent application stack dependencies (e.g., database)
- In terms of networking, security and single-sign-on (SSO), identify the hybrid interaction between legacy application components on VMs and cloud-native components in K8s. In particular, interaction between legacy desktop UI components that must be deployed to a VM using virtual desktop infrastructure (VDI) such as Citrix and other application components deployed to K8s.
- Design an access management component (IDAM) based on OIDC that would be part of the service to encapsulate a secure and consistent entry points to a cloud service comprised of multiple financial applications with different IDAM semantics.
- Where appropriate, design Java extensions of the financial applications to compensate for any gaps they might have that are required by the cloud service. For example, adding logic to support SSO and to federate to the new, central IDAM component. Another example is to design open REST APIs that the service can expose to encapsulate internal legacy APIs.
- You would govern that all of the above is correctly implemented by the DevOps/SRE team. In particular, you will define a comprehensive suite of acceptance test scenarios for the DevOps/SRE team to implement as evidence that their implementation meets your expectations.
- Serve as a problem-solver when dealing with barriers to end-to-end automation. For example, be willing to analyze why legacy tests take days to run and ideate ways to parallelize them so that they take only minutes and therefore can be included in CI/CD pipelines.
Required Experience:
- 5 years' software development experience including design and development, preferably for large Java-based systems.
- Familiarity with Git, GitHub actions, GitOps, K8s, Terraform, Ansible, Bash, Python, Restful APIs
- Experience with Azure Cloud Technologies, Java, Maven/Gradle, SQL, Oracle, OIDC, SAML, Kubernetes, Open APIs, Citrix/Citrix Cloud.
- Operational experience with hosted SaaS solutions preferred.
- Experience with modular design of software, such as the 12 factor principles.
- Experience with how to test Kubernetes-based deployments preferred.
- Experience in modular design and good practices for establishing a software operation, including structure of Git repos and branch management, versioning and testing, and maintaining a clean and self-documenting codebase.
- Ability to provide solutions to a variety of technical problems of moderate scope and complexity independently.
- Strong technical, analytical, and development skills.
- Proficient knowledge of required programming languages.
- Effective verbal and written communication skills; effective customer service skills.
- Ability to work independently or within a team environment and handle multiple projects simultaneously.