▶Book Description
Businesses today are evolving so rapidly that they are resorting to the elasticity of the cloud to provide a platform to build and deploy their highly scalable applications. This means developers now are faced with the challenge of building build applications that are native to the cloud. For this, they need to be aware of the environment, tools, and resources they're coding against.
If you're a Java developer who wants to build secure, resilient, robust, and scalable applications that are targeted for cloud-based deployment, this is the book for you. It will be your one stop guide to building cloud-native applications in Java Spring that are hosted in On-prem or cloud providers - AWS and Azure
The book begins by explaining the driving factors for cloud adoption and shows you how cloud deployment is different from regular application deployment on a standard data centre. You will learn about design patterns specific to applications running in the cloud and find out how you can build a microservice in Java Spring using REST APIs
You will then take a deep dive into the lifecycle of building, testing, and deploying applications with maximum automation to reduce the deployment cycle time. Gradually, you will move on to configuring the AWS and Azure platforms and working with their APIs to deploy your application. Finally, you'll take a look at API design concerns and their
▶What You Will Learn
⦁ See the benefits of the cloud environment when it comes to variability, provisioning, and tooling support
⦁ Understand the architecture patterns and considerations when developing on the cloud
⦁ Find out how to perform cloud-native techniques/patterns for request routing, RESTful service creation, Event Sourcing, and more
⦁ Create Docker containers for microservices and set up continuous integration using Jenkins
⦁ Monitor and troubleshoot an application deployed in the cloud environment
⦁ Explore tools such as Docker and Kubernetes for containerization and the ELK stack for log aggregation and visualization
⦁ Use AWS and Azure specific tools to design, develop, deploy, and manage applications
⦁ Migrate from monolithic architectures to a cloud native deployment
▶Key Features
⦁ Take advantage of the simplicity of Spring to build a full-fledged application
⦁ Let your applications run faster while generating smaller cloud service bills
⦁ Integrate your application with various tools such as Docker and ElasticSearch and use specific tools in Azure and AWS
▶Who This Book Is For
Java developers who want to build resilient, robust, and scalable applications that are targeted for cloud-based deployment will find this book helpful. Some knowledge of Java, Spring, web programming, and public cloud providers (AWS and Azure) should be sufficient to get you through the book.
▶ To get the most out of this book
1. The book starts with an introduction and then builds on a simple service, step by step, through the chapters. Hence, the readers will benefit by following the flow of the book, unless they are looking for a particular topic.
2. Downloading the code and running it is always tempting. However, you will benefit more as you type the code out, especially in the initial chapters. The book is written in such a way that the important concepts and code are present in the chapter, thus preventing you from going back to see the source code.
3. Having said that, do try out the code samples and run them. It makes the principles concrete and easier to grasp.
4. I hope that you have invested in a good desktop/laptop, given that you will be running containers and VMs on your machine, which take resources, it is good to have a strong piece of equipment to get going.
5. Refer to the documentation links mentioned through the chapters to expand the knowledge on the frameworks and technologies discussed in the book.
6. The cloud is a technology that changes very rapidly. Hence, this book stresses on concepts and demonstrates them through code. For example, CQRS is important as a concept, so we have shown implementation on MongoDB and Elasticsearch. However, you can try out the pattern on any other set of databases.
▶What this book covers
⦁ Chapter 1, Introduction to Cloud-Native, addresses the what and why of cloud-native applications: what are the drivers of moving to cloud application? Why is cloud development and deployment different from regular applications? What is a 12-factor app?
⦁ Chapter 2, Writing Your First Cloud-Native Application, introduces the core concepts of using the microservices approach for application design. It then shows a sample barebones product service that will be enhanced as the discussion progresses in the book. You will learn how to use Spring Boot for microservice application development and appreciate the microservice principles that are used to build cloud-native applications.
⦁ Chapter 3, Designing Your Cloud-Native Application, covers some of the high-level architecture considerations in designing cloud-native applications. It includes event-driven architecture, decoupling using choreography, and using domain-driven design (DDD) concepts such as Bounded Contexts. You will learn about the architecture patterns and considerations for developing on the cloud and frontending the applications with consumer-friendly APIs instead of a system-centric service definition.
⦁ Chapter 4, Extending Your Cloud-Native Application, takes a deep dive into creating an application using various stacks, principles, and supporting components. It covers the patterns while implementing the service. This chapter highlights the differential aspects such as error handling and patterns such as Command Query Response Segregation
(CQRS) and caching that have a significant impact on cloud development.
⦁ Chapter 5, Testing Cloud-Native Applications, delves into how to test your microservices and how to write tests in behavior-driven development.
⦁ Chapter 6, Cloud-Native Application Deployment, delves into the deployment model for the microservice, including how to package your application in a Docker container and setting up the CI/CD pipeline.
⦁ Chapter 7, Cloud-Native Application Runtime, covers the runtime aspects of the service. We will cover how configuration can be externalized in a configuration server and frontend by Zuul (Edge). We will look at Pivotal Cloud Foundry and deploying our service on PCF Dev. We will also cover container orchestrations.
⦁ Chapter 8, Platform Deployment –. AWS, describes the AWS environment and discusses AWS-specific tools to do cloud development using the concepts (registry, configuration, log
aggregation, and async messaging) discussed in earlier chapters.
⦁ Chapter 9, Platform Deployment –. Azure, describes the Azure environment and discusses Azure-specific tools to do cloud development (including Service Fabric and Cloud Functions).
⦁ Chapter 10, As a Service Integration, discusses the various types of XaaS, including IaaS, PaaS, iPaaS, and DBaaS, and how to expose infrastructure elements as services. In the cloud-native mode, your application might be integrating with social media APIs or PaaS
APIs or you can be hosting services that will be used by other applications. This chapter covers how to connect/use other external services or provide such services.
⦁ Chapter 11, API Design Best Practices, discusses how to design consumer-centric APIs that are granular and functionality oriented. It also discusses the various best practices in API design, such as whether to do orchestration at the API level or in service, how to create freemium versions of API, how to address the channel-specific concerns at the API layer so that the service remains channel agnostic, and the security aspects in API design.
⦁ Chapter 12, Digital Transformation, covers the impact of cloud development on the existing landscape of an enterprise and how it can achieve the transformation to move toward a digital enterprise.