diff --git a/cloudbank/404.html b/cloudbank/404.html index 3187de51a..14d5ea6e8 100644 --- a/cloudbank/404.html +++ b/cloudbank/404.html @@ -3,7 +3,7 @@ - + @@ -17,25 +17,26 @@ 404 Page not found :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + +
@@ -410,7 +415,7 @@

Query and Create Accounts

@@ -436,8 +441,8 @@

Query and Create Accounts

- - - + + + diff --git a/cloudbank/account/create-project/index.html b/cloudbank/account/create-project/index.html index b955667a3..f94956dd6 100644 --- a/cloudbank/account/create-project/index.html +++ b/cloudbank/account/create-project/index.html @@ -3,7 +3,7 @@ - + Create Project :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -354,7 +359,7 @@

Create Project

@@ -380,8 +385,8 @@

Create Project

- - - + + + diff --git a/cloudbank/account/deploy/index.html b/cloudbank/account/deploy/index.html index 0238d5473..8bfe840f8 100644 --- a/cloudbank/account/deploy/index.html +++ b/cloudbank/account/deploy/index.html @@ -3,7 +3,7 @@ - + Deploy Account Service :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -455,7 +460,7 @@

Acknowledgements

@@ -481,8 +486,8 @@

Acknowledgements

- - - + + + diff --git a/cloudbank/account/expose/index.html b/cloudbank/account/expose/index.html index 922c87533..caa930eb8 100644 --- a/cloudbank/account/expose/index.html +++ b/cloudbank/account/expose/index.html @@ -3,7 +3,7 @@ - + Expose using APISIX :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -316,7 +321,7 @@

Expose using APISIX

@@ -342,8 +347,8 @@

Expose using APISIX

- - - + + + diff --git a/cloudbank/account/extra-endpoints/index.html b/cloudbank/account/extra-endpoints/index.html index 7ebbc180f..1ca02388a 100644 --- a/cloudbank/account/extra-endpoints/index.html +++ b/cloudbank/account/extra-endpoints/index.html @@ -3,7 +3,7 @@ - + Extra Account Endpoints :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -345,7 +350,7 @@

Extra Account Endpoints

@@ -371,8 +376,8 @@

Extra Account Endpoints

- - - + + + diff --git a/cloudbank/account/first-service/index.html b/cloudbank/account/first-service/index.html index 44a544958..52b75ff67 100644 --- a/cloudbank/account/first-service/index.html +++ b/cloudbank/account/first-service/index.html @@ -3,7 +3,7 @@ - + Implement First Service :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -313,7 +318,7 @@

Implement First Service

@@ -339,8 +344,8 @@

Implement First Service

- - - + + + diff --git a/cloudbank/account/index.html b/cloudbank/account/index.html index b7d81c6b0..05bcfc71e 100644 --- a/cloudbank/account/index.html +++ b/cloudbank/account/index.html @@ -3,43 +3,44 @@ - + - + - + - + - - + + Account Microservice :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -245,7 +254,7 @@

Account Microservice

@@ -271,8 +280,8 @@

Account Microservice

- - - + + + diff --git a/cloudbank/account/index.xml b/cloudbank/account/index.xml index 936322e91..ec201e218 100644 --- a/cloudbank/account/index.xml +++ b/cloudbank/account/index.xml @@ -3,7 +3,7 @@ Account Microservice :: CloudBank https://oracle.github.io/microservices-datadriven/cloudbank/account/index.html - This is a new chapter. + This module walks you through building your very first microservice using Spring Boot. It assumes no prior knowledge of Spring Boot, so its a great place to start if you have not used Spring Boot before. This module demonstrates how to build a service with a synchronous API implemented as REST endpoints using Spring Web MVC, and how to store data in Oracle Database using Spring Data JPA. Hugo en-us diff --git a/cloudbank/account/intro/index.html b/cloudbank/account/intro/index.html index ebcda3b3a..fd1fe0981 100644 --- a/cloudbank/account/intro/index.html +++ b/cloudbank/account/intro/index.html @@ -3,7 +3,7 @@ - + Introduction :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -284,7 +289,7 @@

Prerequisites (Optional)

@@ -310,8 +315,8 @@

Prerequisites (Optional)

- - - + + + diff --git a/cloudbank/account/jpa/index.html b/cloudbank/account/jpa/index.html index 131c07720..b62c8deae 100644 --- a/cloudbank/account/jpa/index.html +++ b/cloudbank/account/jpa/index.html @@ -3,7 +3,7 @@ - + @@ -25,25 +25,26 @@ To add Spring Data JPA and the Oracle Database drivers to your project, open the Maven POM (pom."> Use Spring Data JPA :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -414,7 +419,7 @@

Use Spring Data JPA

@@ -440,8 +445,8 @@

Use Spring Data JPA

- - - + + + diff --git a/cloudbank/account/prepare-database/index.html b/cloudbank/account/prepare-database/index.html index a300db256..359d20168 100644 --- a/cloudbank/account/prepare-database/index.html +++ b/cloudbank/account/prepare-database/index.html @@ -3,7 +3,7 @@ - + Prepare Database Objects :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -339,7 +344,7 @@

Prepare Database Objects

@@ -365,8 +370,8 @@

Prepare Database Objects

- - - + + + diff --git a/cloudbank/backend/admin/index.html b/cloudbank/backend/admin/index.html index b37f80155..4c286e62e 100644 --- a/cloudbank/backend/admin/index.html +++ b/cloudbank/backend/admin/index.html @@ -3,7 +3,7 @@ - + Explore Spring Admin :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -278,7 +283,7 @@

Explore Spring Admin

@@ -304,8 +309,8 @@

Explore Spring Admin

- - - + + + diff --git a/cloudbank/backend/apisix/index.html b/cloudbank/backend/apisix/index.html index 291efee5e..3defaa49b 100644 --- a/cloudbank/backend/apisix/index.html +++ b/cloudbank/backend/apisix/index.html @@ -3,7 +3,7 @@ - + @@ -21,25 +21,26 @@ Explore APISIX API Gateway :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -271,7 +276,7 @@

Explore APISIX API Gateway

@@ -297,8 +302,8 @@

Explore APISIX API Gateway

- - - + + + diff --git a/cloudbank/backend/config/index.html b/cloudbank/backend/config/index.html index 17e938725..186806fc5 100644 --- a/cloudbank/backend/config/index.html +++ b/cloudbank/backend/config/index.html @@ -3,7 +3,7 @@ - + @@ -21,25 +21,26 @@ Explore Spring Config Server :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -255,7 +260,7 @@

Explore Spring Config Server

@@ -281,8 +286,8 @@

Explore Spring Config Server

- - - + + + diff --git a/cloudbank/backend/database/index.html b/cloudbank/backend/database/index.html index 762ced993..3a956942d 100644 --- a/cloudbank/backend/database/index.html +++ b/cloudbank/backend/database/index.html @@ -3,7 +3,7 @@ - + Explore Oracle Autonomous Database :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -283,7 +288,7 @@

Explore Oracle Autonomous Database

@@ -309,8 +314,8 @@

Explore Oracle Autonomous Database - - - + + + diff --git a/cloudbank/backend/eureka/index.html b/cloudbank/backend/eureka/index.html index 31545033a..cd544130f 100644 --- a/cloudbank/backend/eureka/index.html +++ b/cloudbank/backend/eureka/index.html @@ -3,7 +3,7 @@ - + @@ -21,25 +21,26 @@ Explore Eureka Service Registry :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -255,7 +260,7 @@

Explore Eureka Service Registry

@@ -281,8 +286,8 @@

Explore Eureka Service Registry

- - - + + + diff --git a/cloudbank/backend/grafana/index.html b/cloudbank/backend/grafana/index.html index 23f13254c..20b8f19f9 100644 --- a/cloudbank/backend/grafana/index.html +++ b/cloudbank/backend/grafana/index.html @@ -3,7 +3,7 @@ - + Explore Grafana :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -279,7 +284,7 @@

Explore Grafana

@@ -305,8 +310,8 @@

Explore Grafana

- - - + + + diff --git a/cloudbank/backend/index.html b/cloudbank/backend/index.html index 94d674ab5..9abceb7aa 100644 --- a/cloudbank/backend/index.html +++ b/cloudbank/backend/index.html @@ -3,43 +3,44 @@ - + - + - + - + - - + + Explore the Backend :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -245,7 +252,7 @@

Explore the Backend

@@ -271,8 +278,8 @@

Explore the Backend

- - - + + + diff --git a/cloudbank/backend/index.xml b/cloudbank/backend/index.xml index 9d290c9f6..b71ec071a 100644 --- a/cloudbank/backend/index.xml +++ b/cloudbank/backend/index.xml @@ -3,7 +3,7 @@ Explore the Backend :: CloudBank https://oracle.github.io/microservices-datadriven/cloudbank/backend/index.html - This is a new chapter. + This module will take you on a guided tour through the Oracle Backend for Spring Boot and Microservices platform. You will learn about the platform services and observability tools that are provided out-of-the-box. Hugo en-us diff --git a/cloudbank/backend/intro/index.html b/cloudbank/backend/intro/index.html index 1ade366e5..74f510bc0 100644 --- a/cloudbank/backend/intro/index.html +++ b/cloudbank/backend/intro/index.html @@ -3,7 +3,7 @@ - + Introduction :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -292,7 +297,7 @@

Prerequisites

@@ -318,8 +323,8 @@

Prerequisites

- - - + + + diff --git a/cloudbank/backend/jaeger/index.html b/cloudbank/backend/jaeger/index.html index 4470b87d5..5be13d232 100644 --- a/cloudbank/backend/jaeger/index.html +++ b/cloudbank/backend/jaeger/index.html @@ -3,7 +3,7 @@ - + Explore Jaeger :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -272,7 +277,7 @@

Explore Jaeger

@@ -298,8 +303,8 @@

Explore Jaeger

- - - + + + diff --git a/cloudbank/backend/k8s/index.html b/cloudbank/backend/k8s/index.html index 98c761ff6..bb5d47878 100644 --- a/cloudbank/backend/k8s/index.html +++ b/cloudbank/backend/k8s/index.html @@ -3,7 +3,7 @@ - + Explore Kubernetes :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -380,7 +385,7 @@

Explore Kubernetes

@@ -406,8 +411,8 @@

Explore Kubernetes

- - - + + + diff --git a/cloudbank/categories/index.html b/cloudbank/categories/index.html index e60d26d78..bf50b346d 100644 --- a/cloudbank/categories/index.html +++ b/cloudbank/categories/index.html @@ -3,7 +3,7 @@ - + @@ -17,25 +17,26 @@ Categories :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -237,7 +242,7 @@

Categories

@@ -263,8 +268,8 @@

Categories

- - - + + + diff --git a/cloudbank/check/check-processing/index.html b/cloudbank/check/check-processing/index.html index 368892960..85944824a 100644 --- a/cloudbank/check/check-processing/index.html +++ b/cloudbank/check/check-processing/index.html @@ -3,7 +3,7 @@ - + @@ -25,25 +25,26 @@ Create a new Java Project for the checks service. In the Explorer of VS Code open Java Project and click the plus sign to add a Java Project to your workspace."> Create the Check Processing Microservice :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -690,7 +695,7 @@

Create the Check Processing Mi
@@ -716,8 +721,8 @@

Create the Check Processing Mi

- - - + + + diff --git a/cloudbank/check/create-queues/index.html b/cloudbank/check/create-queues/index.html index dcf93f618..5bde6390a 100644 --- a/cloudbank/check/create-queues/index.html +++ b/cloudbank/check/create-queues/index.html @@ -3,7 +3,7 @@ - + @@ -25,25 +25,26 @@ ```sql grant execute on dbms_aq to account; grant execute on dbms_aqadm to account; grant execute on dbms_aqin to account; commit; ``` Now connect as the account user and create the queues by executing these statements (replace [TNS-ENTRY] with your environment information)."> Create Queues in the Database :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -287,7 +292,7 @@

Create Queues in the Database

@@ -313,8 +318,8 @@

Create Queues in the Database

- - - + + + diff --git a/cloudbank/check/create-testrunner/index.html b/cloudbank/check/create-testrunner/index.html index 2cc26b492..76308d613 100644 --- a/cloudbank/check/create-testrunner/index.html +++ b/cloudbank/check/create-testrunner/index.html @@ -3,7 +3,7 @@ - + Create the Test Runner Microservice :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -609,7 +614,7 @@

Create the Test Runner Microservice
@@ -635,8 +640,8 @@

Create the Test Runner Microservice

- - - + + + diff --git a/cloudbank/check/index.html b/cloudbank/check/index.html index 78af074b3..382a44af5 100644 --- a/cloudbank/check/index.html +++ b/cloudbank/check/index.html @@ -3,43 +3,44 @@ - + - + - + - + - - + + Check Processing :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -245,7 +253,7 @@

Check Processing

@@ -271,8 +279,8 @@

Check Processing

- - - + + + diff --git a/cloudbank/check/index.xml b/cloudbank/check/index.xml index a768306bc..44f66c705 100644 --- a/cloudbank/check/index.xml +++ b/cloudbank/check/index.xml @@ -3,7 +3,7 @@ Check Processing :: CloudBank https://oracle.github.io/microservices-datadriven/cloudbank/check/index.html - This is a new chapter. + In this module, you will build microservices that use asynchronous messaging to communicate using Spring JMS and Oracle Transactional Event Queues. It introduces service discovery using Eureka Service Registry (part of Spring Cloud Netflix) and Spring Cloud OpenFeign. Hugo en-us diff --git a/cloudbank/check/intro/index.html b/cloudbank/check/intro/index.html index 072220355..8fccb33fd 100644 --- a/cloudbank/check/intro/index.html +++ b/cloudbank/check/intro/index.html @@ -3,7 +3,7 @@ - + @@ -21,25 +21,26 @@ Introduction :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -271,7 +276,7 @@

Prerequisites (Optional)

@@ -297,8 +302,8 @@

Prerequisites (Optional)

- - - + + + diff --git a/cloudbank/check/learn/index.html b/cloudbank/check/learn/index.html index 365dfbca9..d93a7bf96 100644 --- a/cloudbank/check/learn/index.html +++ b/cloudbank/check/learn/index.html @@ -3,7 +3,7 @@ - + @@ -25,25 +25,26 @@ In this lab, we will assume that customers can deposit a check at an Automated Teller Machine (ATM) by typing in the check amount, placing the check into a deposit envelope and then inserting that envelope into the ATM."> Learn about the scenario :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -263,7 +268,7 @@

Learn about the scenario

@@ -289,8 +294,8 @@

Learn about the scenario

- - - + + + diff --git a/cloudbank/check/test/index.html b/cloudbank/check/test/index.html index 7060c37c0..912abb8ae 100644 --- a/cloudbank/check/test/index.html +++ b/cloudbank/check/test/index.html @@ -3,7 +3,7 @@ - + Test the end-to-end flow :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -352,7 +357,7 @@

Test the end-to-end flow

@@ -378,8 +383,8 @@

Test the end-to-end flow

- - - + + + diff --git a/cloudbank/check/update-account/index.html b/cloudbank/check/update-account/index.html index 74a05e022..df8aba2f8 100644 --- a/cloudbank/check/update-account/index.html +++ b/cloudbank/check/update-account/index.html @@ -3,7 +3,7 @@ - + @@ -25,25 +25,26 @@ Create the Journal model Create a new Java file in src/main/java/com/example/accounts/model called Journal.java. In this class you can define the fields that make up the journal. Note that you created the Journal table in the previous lab. You will not use the lraId and lraState fields until a later lab."> Add Journal to the Account service :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -515,7 +520,7 @@

Add Journal to the Account service

@@ -541,8 +546,8 @@

Add Journal to the Account service - - - + + + diff --git a/cloudbank/cleanup/images/cleanup-free-tier-1.png b/cloudbank/cleanup/images/cleanup-free-tier-1.png new file mode 100644 index 000000000..15b50452c Binary files /dev/null and b/cloudbank/cleanup/images/cleanup-free-tier-1.png differ diff --git a/cloudbank/cleanup/images/cleanup-free-tier-2.png b/cloudbank/cleanup/images/cleanup-free-tier-2.png new file mode 100644 index 000000000..b7622a512 Binary files /dev/null and b/cloudbank/cleanup/images/cleanup-free-tier-2.png differ diff --git a/cloudbank/cleanup/images/cleanup-free-tier-3.png b/cloudbank/cleanup/images/cleanup-free-tier-3.png new file mode 100644 index 000000000..dce03c8bb Binary files /dev/null and b/cloudbank/cleanup/images/cleanup-free-tier-3.png differ diff --git a/cloudbank/cleanup/images/cleanup-free-tier-4.png b/cloudbank/cleanup/images/cleanup-free-tier-4.png new file mode 100644 index 000000000..6713da95d Binary files /dev/null and b/cloudbank/cleanup/images/cleanup-free-tier-4.png differ diff --git a/cloudbank/cleanup/images/cleanup-free-tier-5.png b/cloudbank/cleanup/images/cleanup-free-tier-5.png new file mode 100644 index 000000000..d43b03c16 Binary files /dev/null and b/cloudbank/cleanup/images/cleanup-free-tier-5.png differ diff --git a/cloudbank/cleanup/images/cleanup-free-tier-6.png b/cloudbank/cleanup/images/cleanup-free-tier-6.png new file mode 100644 index 000000000..7839d5173 Binary files /dev/null and b/cloudbank/cleanup/images/cleanup-free-tier-6.png differ diff --git a/cloudbank/cleanup/images/cleanup-free-tier-7.png b/cloudbank/cleanup/images/cleanup-free-tier-7.png new file mode 100644 index 000000000..bfa768f03 Binary files /dev/null and b/cloudbank/cleanup/images/cleanup-free-tier-7.png differ diff --git a/cloudbank/cleanup/images/cleanup-free-tier-8.png b/cloudbank/cleanup/images/cleanup-free-tier-8.png new file mode 100644 index 000000000..e342a7fc8 Binary files /dev/null and b/cloudbank/cleanup/images/cleanup-free-tier-8.png differ diff --git a/cloudbank/cleanup/index.html b/cloudbank/cleanup/index.html index 7c5ccf6b1..c80ceb15e 100644 --- a/cloudbank/cleanup/index.html +++ b/cloudbank/cleanup/index.html @@ -3,43 +3,44 @@ - + - + - + - + - - + + Cleanup :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -245,7 +252,7 @@

Cleanup

@@ -271,8 +278,8 @@

Cleanup

- - - + + + diff --git a/cloudbank/cleanup/index.xml b/cloudbank/cleanup/index.xml index 54f3be3b3..a15299da4 100644 --- a/cloudbank/cleanup/index.xml +++ b/cloudbank/cleanup/index.xml @@ -3,7 +3,7 @@ Cleanup :: CloudBank https://oracle.github.io/microservices-datadriven/cloudbank/cleanup/index.html - This is a new chapter. + This module demonstrates how to clean up any resources created when you provisioned an instance of Oracle Backend for Spring Boot and Microservices on Oracle Cloud Infrastructure (OCI) or on your local machine in containers. Hugo en-us @@ -15,11 +15,25 @@ When you have finished this Live module you may wish to clean up the resources you created. If so, you may complete the steps in this optional module. Estimated module Time: 20 minutes Quick walk through on how to clean up the module environment. Objectives In this workshop, you will learn how to: Clean up your instance of the Oracle Backend for Spring Boot and Microservices and other resources you created during this Live module Prerequisites This module assumes you have: - Uninstall - https://oracle.github.io/microservices-datadriven/cloudbank/cleanup/uninstall/index.html + Local cleanup + https://oracle.github.io/microservices-datadriven/cloudbank/cleanup/uninstall-local/index.html Mon, 01 Jan 0001 00:00:00 +0000 - https://oracle.github.io/microservices-datadriven/cloudbank/cleanup/uninstall/index.html - The Oracle Backend for Spring Boot and Microservices environment was deployed using ORM and Terraform. The uninstall will use OCI Resource Manager (ORM) to Destroy the stack. Navigate to OCI Resource Manager Stacks Make sure you choose the Compartment where you installed Oracle Backend for Spring Boot and Microservices. Click on the Stack Name (which will be different from the screenshot) After picking the stack. Click destroy. NOTE This will stop all resources and remove the Oracle Backend for Spring Boot and Microservices environment. + https://oracle.github.io/microservices-datadriven/cloudbank/cleanup/uninstall-local/index.html + Note: These steps apply only if you chose the option to install in a local container. Stop the local container using this command: docker stop obaas Note: If you want to use the environment again later, stop at this step. You can restart it later with the command docker start obaas. Remove the local container using this command: docker rm obaas + + + OCI Free Tier Cleanup + https://oracle.github.io/microservices-datadriven/cloudbank/cleanup/uninstall-free-trial/index.html + Mon, 01 Jan 0001 00:00:00 +0000 + https://oracle.github.io/microservices-datadriven/cloudbank/cleanup/uninstall-free-trial/index.html + Note: These steps apply only if you chose the option to install in OCI Free Tier. Login into your OCI Free Trail account. Delete the Compute Instance. Select the compartment where you installed the Compute instance in the drop down box on the left hand side of the OCI Console. Navigate to the Compute Instances page by clicking on the link on the home page of the OCI Console or opening the main menu using the “hamburger” icon ( ) in the top left corner of the console and searching for “instance”: + + + OCI Marketplace Uninstall + https://oracle.github.io/microservices-datadriven/cloudbank/cleanup/uninstall-mp/index.html + Mon, 01 Jan 0001 00:00:00 +0000 + https://oracle.github.io/microservices-datadriven/cloudbank/cleanup/uninstall-mp/index.html + Note: These steps apply only if you chose the option to install the full stack from OCI Marketplace. The Oracle Backend for Spring Boot and Microservices environment was deployed using ORM and Terraform. The uninstall will use OCI Resource Manager (ORM) to Destroy the stack. Navigate to OCI Resource Manager Stacks Make sure you choose the Compartment where you installed Oracle Backend for Spring Boot and Microservices. Click on the Stack Name (which will be different from the screenshot) \ No newline at end of file diff --git a/cloudbank/cleanup/intro/index.html b/cloudbank/cleanup/intro/index.html index 278b93c3d..0347cdb26 100644 --- a/cloudbank/cleanup/intro/index.html +++ b/cloudbank/cleanup/intro/index.html @@ -3,7 +3,7 @@ - + Introduction :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -283,7 +288,7 @@

Prerequisites

@@ -309,8 +314,8 @@

Prerequisites

- - - + + + diff --git a/cloudbank/cleanup/uninstall-free-trial/index.html b/cloudbank/cleanup/uninstall-free-trial/index.html new file mode 100644 index 000000000..b2e61a2f9 --- /dev/null +++ b/cloudbank/cleanup/uninstall-free-trial/index.html @@ -0,0 +1,384 @@ + + + + + + + + + + + + + + + + + + + + + + + OCI Free Tier Cleanup :: CloudBank + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+
+
+ +

OCI Free Tier Cleanup

+ +
+

Note: These steps apply only if you chose the option to install in OCI Free Tier.

+
+
    +
  1. +

    Login into your OCI Free Trail account.

    +
  2. +
  3. +

    Delete the Compute Instance.

    +
      +
    • +

      Select the compartment where you installed the Compute instance in the drop down box on the left hand side of the OCI Console.

      +
    • +
    • +

      Navigate to the Compute Instances page by clicking on the link on the home page of the OCI Console or opening the main menu using the “hamburger” icon ( ) in the top left corner of the console and searching for +“instance”:

      +

      Instances +Instances

      +
    • +
    • +

      Click on the compute instance name. The name of your instance will be different than the example below.

      +

      Select Compute Instance +Select Compute Instance

      +
    • +
    • +

      Click on the Terminate button.

      +
    • +
    • +

      In the Terminate Instance dialog box it is VERY important that you select Permanently delete the attached boot volume.

      +

      Terminate Instance +Terminate Instance

      +

      The instance will now be terminated. This process will take a few minutes. When the status of the instance changes to terminated you can move on to the next step.

      +
    • +
    +
  4. +
  5. +

    Delete the Custom Image.

    +
      +
    • +

      Select the compartment where you created the Custom image in the drop down box on the left hand side of the OCI Console.

      +
    • +
    • +

      Navigate to the Custom Instances page by opening the main menu using the “hamburger” icon ( ) in the top left corner of the console and searching for “image”:

      +

      Custom Image +Custom Image

      +
    • +
    • +

      Clock in the three little dots on the right hand side of table and select Delete. And confirm by clicking the Delete button in the dialog box.

      +

      Custom Image Delete +Custom Image Delete

      +

      The custom image you created is now deleted.

      +
    • +
    +
  6. +
  7. +

    Delete the Virtual Cloud Network.

    +
      +
    • +

      Select the compartment where you installed the Compute instance in the drop down box on the left hand side of the OCI Console.

      +
    • +
    • +

      Navigate to the Virtual cloud networks page by clicking on the link on the home page of the OCI Console or opening the main menu using the “hamburger” icon ( ) in the top left corner of the console and searching for +“instance”:

      +

      Virtual Cloud Network +Virtual Cloud Network

      +
    • +
    • +

      Click on the network name.

      +

      Virtual Cloud Network Name +Virtual Cloud Network Name

      +
    • +
    • +

      Click on the Delete button.

      +
    • +
    • +

      In the Delete Virtual Cloud Network dialog box, it is important that you select Specific Compartment and the compartment where you installed the VCN. Otherwise the scan will can all the compartments in the tenancy. Click on the Scan button.

      +

      Virtual Cloud Network Name +Virtual Cloud Network Name

      +
    • +
    • +

      When the scan is complete, click on the Delete All button. Click the Close button when the deletion is complete.

      +

      The VCN you created is now deleted.

      +
    • +
    +
  8. +
+ +
+
+
+
+
+
+ + + + + + diff --git a/cloudbank/cleanup/uninstall-local/index.html b/cloudbank/cleanup/uninstall-local/index.html new file mode 100644 index 000000000..5a9172749 --- /dev/null +++ b/cloudbank/cleanup/uninstall-local/index.html @@ -0,0 +1,312 @@ + + + + + + + + + + + + + + + + + + + + + + + Local cleanup :: CloudBank + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+
+
+ +

Local cleanup

+ +
+

Note: These steps apply only if you chose the option to install in a local container.

+
+
    +
  1. +

    Stop the local container using this command:

    +
    docker stop obaas
    +

    Note: If you want to use the environment again later, stop at this step. You can restart it later with the command docker start obaas.

    +
    +
  2. +
  3. +

    Remove the local container using this command:

    +
    docker rm obaas
  4. +
+ +
+
+
+
+
+
+ + + + + + diff --git a/cloudbank/cleanup/uninstall-mp/index.html b/cloudbank/cleanup/uninstall-mp/index.html new file mode 100644 index 000000000..7b5fc1b8b --- /dev/null +++ b/cloudbank/cleanup/uninstall-mp/index.html @@ -0,0 +1,333 @@ + + + + + + + + + + + + + + + + + + + + + + + OCI Marketplace Uninstall :: CloudBank + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+
+
+ +

OCI Marketplace Uninstall

+ +
+

Note: These steps apply only if you chose the option to install the full stack from OCI Marketplace.

+
+

The Oracle Backend for Spring Boot and Microservices environment was deployed using ORM and Terraform. The uninstall will use OCI Resource Manager (ORM) to Destroy the stack.

+
    +
  1. +

    Navigate to OCI Resource Manager Stacks

    +

    OCI ORM +OCI ORM

    +
  2. +
  3. +

    Make sure you choose the Compartment where you installed Oracle Backend for Spring Boot and Microservices. Click on the Stack Name (which will be different from the screenshot)

    +

    Select Stack +Select Stack

    +
  4. +
  5. +

    After picking the stack. Click destroy. NOTE This will stop all resources and remove the Oracle Backend for Spring Boot and Microservices environment. The only way to get it back is to re-deploy the stack

    +

    Destroy Stack +Destroy Stack

    +
  6. +
  7. +

    Confirm that you want to shut down and destroy the resources

    +

    Destroy Stack +Destroy Stack

    +
  8. +
+

If the Terraform Destroy job fails, re-run the Destroy job again after a few minutes.

+

Left over resources

+

Even after the Destroy job has finished there will be one resource left in the tenancy/compartment and that is an OCI Vault. The Vault is on PENDING DELETION mode.

+

OCI Vault +OCI Vault

+ +
+
+
+
+
+
+ + + + + + diff --git a/cloudbank/css/format-print.css b/cloudbank/css/format-print.css index ba2d80d40..e8b125d2c 100644 --- a/cloudbank/css/format-print.css +++ b/cloudbank/css/format-print.css @@ -1,5 +1,5 @@ -@import "theme-relearn-light.css?1723487095"; -@import "chroma-relearn-light.css?1723487095"; +@import "theme-relearn-light.css?1724866676"; +@import "chroma-relearn-light.css?1724866676"; #R-sidebar { display: none; diff --git a/cloudbank/css/print.css b/cloudbank/css/print.css index ad50c1fe7..b2d5daf8e 100644 --- a/cloudbank/css/print.css +++ b/cloudbank/css/print.css @@ -1 +1 @@ -@import "format-print.css?1723487095"; +@import "format-print.css?1724866676"; diff --git a/cloudbank/css/swagger.css b/cloudbank/css/swagger.css index 1f4bb8504..335a3c99b 100644 --- a/cloudbank/css/swagger.css +++ b/cloudbank/css/swagger.css @@ -1,7 +1,7 @@ /* Styles to make Swagger-UI fit into our theme */ -@import "fonts.css?1723487095"; -@import "variables.css?1723487095"; +@import "fonts.css?1724866676"; +@import "variables.css?1724866676"; body{ line-height: 1.574; diff --git a/cloudbank/css/theme-zen-light.css b/cloudbank/css/theme-zen-light.css new file mode 100644 index 000000000..4da24f98b --- /dev/null +++ b/cloudbank/css/theme-zen-light.css @@ -0,0 +1,59 @@ +:root { + --PRIMARY-color: rgba( 26, 115, 232, 1 ); /* brand primary color */ + --SECONDARY-color: rgba( 26, 115, 232, 1 ); /* brand secondary color */ + + --MAIN-TOPBAR-BORDER-color: rgba( 210, 210, 210, 1 ); /* border color between topbar and content */ + --MAIN-LINK-HOVER-color: rgba( 32, 40, 145, 1 ); /* hoverd link color of content */ + --MAIN-BG-color: rgba( 255, 255, 255, 1 ); /* background color of content */ + --MAIN-TEXT-color: rgba( 0, 0, 0, 1 ); /* text color of content and h1 titles */ + --MAIN-TITLES-TEXT-color: rgba( 16, 16, 16, 1 ); /* text color of h2-h6 titles and transparent box titles */ + + --CODE-theme: relearn-light; /* name of the chroma stylesheet file */ + --CODE-BLOCK-color: rgba( 39, 40, 34, 1 ); /* fallback text color of block code; should be adjusted to your selected chroma style */ + --CODE-BLOCK-BG-color: rgba( 250, 250, 250, 1 ); /* fallback background color of block code; should be adjusted to your selected chroma style */ + --CODE-BLOCK-BORDER-color: rgba( 210, 210, 210, 1 ); /* border color of block code */ + --CODE-INLINE-color: rgba( 94, 94, 94, 1 ); /* text color of inline code */ + --CODE-INLINE-BG-color: rgba( 255, 250, 233, 1 ); /* background color of inline code */ + --CODE-INLINE-BORDER-color: rgba( 248, 232, 200, 1 ); /* border color of inline code */ + + --BROWSER-theme: light; /* name of the theme for browser scrollbars of the main section */ + --MERMAID-theme: default; /* name of the default Mermaid theme for this variant, can be overridden in hugo.toml */ + --OPENAPI-theme: light; /* name of the default OpenAPI theme for this variant, can be overridden in hugo.toml */ + --OPENAPI-CODE-theme: idea; /* name of the default OpenAPI code theme for this variant, can be overridden in hugo.toml */ + + --MENU-BORDER-color: rgba( 210, 210, 210, 1 ); /* border color between menu and content */ + --MENU-TOPBAR-BORDER-color: rgba( 247, 247, 247, 1 ); /* border color of vertical line between menu and topbar */ + --MENU-TOPBAR-SEPARATOR-color: rgba( 210, 210, 210, 1 ); /* separator color of vertical line between menu and topbar */ + --MENU-HEADER-BG-color: transparent; /* background color of menu header */ + --MENU-HEADER-BORDER-color: transparent; /* border color between menu header and menu */ + --MENU-HEADER-SEPARATOR-color: rgba( 210, 210, 210, .66 ); /* separator color between menu header and menu */ + + --MENU-HOME-LINK-color: rgba( 64, 64, 64, 1 ); /* home button color if configured */ + --MENU-HOME-LINK-HOVER-color: rgba( 26, 115, 232, 1 ); /* hoverd home button color if configured */ + + --MENU-SEARCH-color: rgba( 26, 115, 232, 1 ); /* text and icon color of search box */ + --MENU-SEARCH-BG-color: rgba( 255, 255, 255, 1 ); /* background color of search box */ + --MENU-SEARCH-BORDER-color: rgba( 210, 210, 210, .66 ); /* border color of search box */ + + --MENU-SECTIONS-BG-color: rgba( 134, 134, 134, .066 ); /* background of the menu; this is NOT just a color value but can be a complete CSS background definition including gradients, etc. */ + --MENU-SECTIONS-ACTIVE-BG-color: transparent; /* background color of the active menu section */ + --MENU-SECTIONS-LINK-color: rgba( 16, 16, 16, 1 ); /* link color of menu topics */ + --MENU-SECTIONS-LINK-HOVER-color: rgba( 26, 115, 232, 1 ); /* hoverd link color of menu topics */ + --MENU-SECTION-ACTIVE-CATEGORY-color: rgba( 26, 115, 232, 1 ); /* text color of the displayed menu topic */ + --MENU-SECTION-ACTIVE-CATEGORY-BG-color: rgba( 255, 255, 255, 1 ); /* background color of the displayed menu topic */ + --MENU-SECTION-SEPARATOR-color: rgba( 210, 210, 210, .66 ); /* separator color between menu sections and menu footer */ + + --BOX-CAPTION-color: rgba( 255, 255, 255, 1 ); /* text color of colored box titles */ + --BOX-BG-color: rgba( 255, 255, 255, .833 ); /* background color of colored boxes */ + --BOX-TEXT-color: rgba( 16, 16, 16, 1 ); /* text color of colored box content */ + + --BOX-GREY-color: rgba( 210, 210, 210, 1 ); /* background color of grey boxes */ +} + +body a#R-logo, +body a#R-logo:hover, +body #R-logo svg, +body #R-logo svg * { + color: var(--MENU-HOME-LINK-color); + fill: var(--MENU-HOME-LINK-color) !important; +} diff --git a/cloudbank/css/variant.css b/cloudbank/css/variant.css index 07ca8332e..f9db38227 100644 --- a/cloudbank/css/variant.css +++ b/cloudbank/css/variant.css @@ -1,4 +1,4 @@ -@import "variables.css?1723487095"; +@import "variables.css?1724866676"; html { color-scheme: only var(--INTERNAL-BROWSER-theme); diff --git a/cloudbank/deploy-cli/build/index.html b/cloudbank/deploy-cli/build/index.html index 22954cacb..dbf865276 100644 --- a/cloudbank/deploy-cli/build/index.html +++ b/cloudbank/deploy-cli/build/index.html @@ -3,7 +3,7 @@ - + Build CloudBank :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -278,7 +283,7 @@

Build CloudBank

@@ -304,8 +309,8 @@

Build CloudBank

- - - + + + diff --git a/cloudbank/deploy-cli/create-routes/index.html b/cloudbank/deploy-cli/create-routes/index.html index c0e14c3f5..cbbd3e7ef 100644 --- a/cloudbank/deploy-cli/create-routes/index.html +++ b/cloudbank/deploy-cli/create-routes/index.html @@ -3,7 +3,7 @@ - + Create APISIX routes :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -330,7 +335,7 @@

Create APISIX routes

@@ -356,8 +361,8 @@

Create APISIX routes

- - - + + + diff --git a/cloudbank/deploy-cli/deploy/index.html b/cloudbank/deploy-cli/deploy/index.html index c185d5d63..70aaaa388 100644 --- a/cloudbank/deploy-cli/deploy/index.html +++ b/cloudbank/deploy-cli/deploy/index.html @@ -3,7 +3,7 @@ - + Deploy CloudBank :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -370,7 +375,7 @@

Deploy CloudBank

@@ -396,8 +401,8 @@

Deploy CloudBank

- - - + + + diff --git a/cloudbank/deploy-cli/get-code/index.html b/cloudbank/deploy-cli/get-code/index.html index 717f186f0..cd85ae825 100644 --- a/cloudbank/deploy-cli/get-code/index.html +++ b/cloudbank/deploy-cli/get-code/index.html @@ -3,7 +3,7 @@ - + Get the sample code :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -272,7 +277,7 @@

Get the sample code

@@ -298,8 +303,8 @@

Get the sample code

- - - + + + diff --git a/cloudbank/deploy-cli/index.html b/cloudbank/deploy-cli/index.html index 5f61e2238..7dd1bc1b3 100644 --- a/cloudbank/deploy-cli/index.html +++ b/cloudbank/deploy-cli/index.html @@ -3,43 +3,44 @@ - + - + - + - + - - + + Deploy with the CLI :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -245,7 +252,7 @@

Deploy with the CLI

@@ -271,8 +278,8 @@

Deploy with the CLI

- - - + + + diff --git a/cloudbank/deploy-cli/index.xml b/cloudbank/deploy-cli/index.xml index 343be41aa..1f7294c7c 100644 --- a/cloudbank/deploy-cli/index.xml +++ b/cloudbank/deploy-cli/index.xml @@ -3,7 +3,7 @@ Deploy with the CLI :: CloudBank https://oracle.github.io/microservices-datadriven/cloudbank/deploy-cli/index.html - This is a new chapter. + In this module, you will learn how to deploy the full CloudBank application to Oracle Backend for Spring Boot and Microservices using the CLI. If you prefer to use an IDE, skip this module and go to the next module instead. Hugo en-us diff --git a/cloudbank/deploy-cli/intro/index.html b/cloudbank/deploy-cli/intro/index.html index 93612ae87..50d045e41 100644 --- a/cloudbank/deploy-cli/intro/index.html +++ b/cloudbank/deploy-cli/intro/index.html @@ -3,7 +3,7 @@ - + @@ -21,25 +21,26 @@ Introduction :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -269,7 +274,7 @@

Prerequisites

@@ -295,8 +300,8 @@

Prerequisites

- - - + + + diff --git a/cloudbank/deploy-cli/verify/index.html b/cloudbank/deploy-cli/verify/index.html index bbacc4009..c3ba806cd 100644 --- a/cloudbank/deploy-cli/verify/index.html +++ b/cloudbank/deploy-cli/verify/index.html @@ -3,7 +3,7 @@ - + Verify the deployment :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -456,7 +461,7 @@

Verify the deployment

@@ -482,8 +487,8 @@

Verify the deployment

- - - + + + diff --git a/cloudbank/deploy-ide/build/index.html b/cloudbank/deploy-ide/build/index.html index cfb385624..69a0d6498 100644 --- a/cloudbank/deploy-ide/build/index.html +++ b/cloudbank/deploy-ide/build/index.html @@ -3,7 +3,7 @@ - + Build CloudBank :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -278,7 +283,7 @@

Build CloudBank

@@ -304,8 +309,8 @@

Build CloudBank

- - - + + + diff --git a/cloudbank/deploy-ide/get-code/index.html b/cloudbank/deploy-ide/get-code/index.html index 33e02f385..238067934 100644 --- a/cloudbank/deploy-ide/get-code/index.html +++ b/cloudbank/deploy-ide/get-code/index.html @@ -3,7 +3,7 @@ - + Get the sample code :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -271,7 +276,7 @@

Get the sample code

@@ -297,8 +302,8 @@

Get the sample code

- - - + + + diff --git a/cloudbank/deploy-ide/index.html b/cloudbank/deploy-ide/index.html index cf84582f1..e9788cd82 100644 --- a/cloudbank/deploy-ide/index.html +++ b/cloudbank/deploy-ide/index.html @@ -3,43 +3,44 @@ - + - + - + - + - - + + Deploy with an IDE :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -245,7 +252,7 @@

Deploy with an IDE

@@ -271,8 +278,8 @@

Deploy with an IDE

- - - + + + diff --git a/cloudbank/deploy-ide/index.xml b/cloudbank/deploy-ide/index.xml index 82cb3a7b9..dae974c91 100644 --- a/cloudbank/deploy-ide/index.xml +++ b/cloudbank/deploy-ide/index.xml @@ -3,7 +3,7 @@ Deploy with an IDE :: CloudBank https://oracle.github.io/microservices-datadriven/cloudbank/deploy-ide/index.html - This is a new chapter. + In this module, you will learn how to deploy the full CloudBank application to Oracle Backend for Spring Boot and Microservices using one of the IDE plugins - for Visual Studio Code or IntelliJ. Hugo en-us diff --git a/cloudbank/deploy-ide/intro/index.html b/cloudbank/deploy-ide/intro/index.html index 07b0bea6c..07d6be900 100644 --- a/cloudbank/deploy-ide/intro/index.html +++ b/cloudbank/deploy-ide/intro/index.html @@ -3,7 +3,7 @@ - + @@ -25,25 +25,26 @@ If you already have completed the module Deploy the full CloudBank Application using the CLI You can skip Task 1 and Task 2."> Introduction :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -275,7 +280,7 @@

Prerequisites

@@ -301,8 +306,8 @@

Prerequisites

- - - + + + diff --git a/cloudbank/deploy-ide/using-vscode/index.html b/cloudbank/deploy-ide/using-vscode/index.html index 48176bc1a..6cfbeb5da 100644 --- a/cloudbank/deploy-ide/using-vscode/index.html +++ b/cloudbank/deploy-ide/using-vscode/index.html @@ -3,7 +3,7 @@ - + Using the VS Code plugin :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -618,7 +623,7 @@

Using the VS Code plugin

@@ -644,8 +649,8 @@

Using the VS Code plugin

- - - + + + diff --git a/cloudbank/devenv/db-access/index.html b/cloudbank/devenv/db-access/index.html index 8d52ce53a..10dc7fcc3 100644 --- a/cloudbank/devenv/db-access/index.html +++ b/cloudbank/devenv/db-access/index.html @@ -3,7 +3,7 @@ - + Database Access :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -348,7 +353,7 @@

Access the Database usin
@@ -374,8 +379,8 @@

Access the Database usin

- - - + + + diff --git a/cloudbank/devenv/ide-plugin/index.html b/cloudbank/devenv/ide-plugin/index.html index 047d56ccd..c45b0cdd2 100644 --- a/cloudbank/devenv/ide-plugin/index.html +++ b/cloudbank/devenv/ide-plugin/index.html @@ -3,43 +3,44 @@ - + - + - + - + - - + + Install IDE Plugin :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -272,7 +277,7 @@

Install IDE Plugin

@@ -298,8 +303,8 @@

Install IDE Plugin

- - - + + + diff --git a/cloudbank/devenv/ide/index.html b/cloudbank/devenv/ide/index.html index b12656a2c..be237f4ee 100644 --- a/cloudbank/devenv/ide/index.html +++ b/cloudbank/devenv/ide/index.html @@ -3,7 +3,7 @@ - + @@ -25,25 +25,26 @@ Spring Boot Extension Pack Extension Pack for Java Oracle Developer Tools Note: It is possible to use other Integrated Development Environments however all the instructions in this Livemoduleare written for and tested with Visual Studio Code, so we recommend that you use it for this Live Lab."> Install IDE :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -271,7 +276,7 @@

Install IDE

@@ -297,8 +302,8 @@

Install IDE

- - - + + + diff --git a/cloudbank/devenv/index.html b/cloudbank/devenv/index.html index bc0582f7f..f8ace1089 100644 --- a/cloudbank/devenv/index.html +++ b/cloudbank/devenv/index.html @@ -3,43 +3,44 @@ - + - + - + - + - - + + Developer Environment :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -245,7 +250,7 @@

Developer Environment

@@ -271,8 +276,8 @@

Developer Environment

- - - + + + diff --git a/cloudbank/devenv/index.xml b/cloudbank/devenv/index.xml index f1f148860..1081e7981 100644 --- a/cloudbank/devenv/index.xml +++ b/cloudbank/devenv/index.xml @@ -3,7 +3,7 @@ Developer Environment :: CloudBank https://oracle.github.io/microservices-datadriven/cloudbank/devenv/index.html - xyz + This module guides you through setting up the tools required for a Spring Boot developer. Hugo en-us @@ -75,7 +75,7 @@ https://oracle.github.io/microservices-datadriven/cloudbank/devenv/ide-plugin/index.html Mon, 01 Jan 0001 00:00:00 +0000 https://oracle.github.io/microservices-datadriven/cloudbank/devenv/ide-plugin/index.html - If you plan to do the optional part of Lab. 5, you need to install in VS Code the Oracle Backend for Spring Boot and Microservices VS Code plugin. It is an extension to browse and deploy applications on the Oracle Backend for Spring Boot and Microservices platform. This plugin allows to inspect the content of an Oracle Backend for Spring Boot and Microservices deployment, in terms of applications, services and related configurations. + Some modules contain optional parts which show you how to do deployments and configuration with the IDE plugins instead of using the CLI. If you plan to do those optional parts, you need to install the VS Code extension forOracle Backend for Spring Boot and Microservices. It is an extension to browse and deploy applications on the Oracle Backend for Spring Boot and Microservices platform. This plugin allows to inspect the content of an Oracle Backend for Spring Boot and Microservices deployment, in terms of applications, services and related configurations. \ No newline at end of file diff --git a/cloudbank/devenv/intro/index.html b/cloudbank/devenv/intro/index.html index 4133ccc27..917efe31b 100644 --- a/cloudbank/devenv/intro/index.html +++ b/cloudbank/devenv/intro/index.html @@ -3,7 +3,7 @@ - + Introduction :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -296,7 +301,7 @@

Prerequisites

@@ -322,8 +327,8 @@

Prerequisites

- - - + + + diff --git a/cloudbank/devenv/jdk/index.html b/cloudbank/devenv/jdk/index.html index 06c440a4c..2ccc79aaa 100644 --- a/cloudbank/devenv/jdk/index.html +++ b/cloudbank/devenv/jdk/index.html @@ -3,7 +3,7 @@ - + Install JDK :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -280,7 +285,7 @@

Install JDK

@@ -306,8 +311,8 @@

Install JDK

- - - + + + diff --git a/cloudbank/devenv/kubectl-config/index.html b/cloudbank/devenv/kubectl-config/index.html index fed045fb9..3bb8ddc9d 100644 --- a/cloudbank/devenv/kubectl-config/index.html +++ b/cloudbank/devenv/kubectl-config/index.html @@ -3,7 +3,7 @@ - + @@ -21,25 +21,26 @@ Configure Kubectl :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -262,7 +267,7 @@

Configure Kubectl

@@ -288,8 +293,8 @@

Configure Kubectl

- - - + + + diff --git a/cloudbank/devenv/kubectl/index.html b/cloudbank/devenv/kubectl/index.html index 25ac2f50f..25368a02e 100644 --- a/cloudbank/devenv/kubectl/index.html +++ b/cloudbank/devenv/kubectl/index.html @@ -3,7 +3,7 @@ - + Install Kubectl and OCI CLI :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -283,7 +288,7 @@

Install Kubectl and OCI CLI

@@ -309,8 +314,8 @@

Install Kubectl and OCI CLI

- - - + + + diff --git a/cloudbank/devenv/maven/index.html b/cloudbank/devenv/maven/index.html index 2426d84c7..901ca4e5e 100644 --- a/cloudbank/devenv/maven/index.html +++ b/cloudbank/devenv/maven/index.html @@ -3,7 +3,7 @@ - + Install Maven :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -280,7 +285,7 @@

Install Maven

@@ -306,8 +311,8 @@

Install Maven

- - - + + + diff --git a/cloudbank/devenv/oractl/index.html b/cloudbank/devenv/oractl/index.html index 27f947d23..7d5c678e1 100644 --- a/cloudbank/devenv/oractl/index.html +++ b/cloudbank/devenv/oractl/index.html @@ -3,7 +3,7 @@ - + Install CLI :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -290,7 +295,7 @@

Install CLI

@@ -316,8 +321,8 @@

Install CLI

- - - + + + diff --git a/cloudbank/devenv/sqlcl/index.html b/cloudbank/devenv/sqlcl/index.html index d8c9d1b9d..2ebf6e95d 100644 --- a/cloudbank/devenv/sqlcl/index.html +++ b/cloudbank/devenv/sqlcl/index.html @@ -3,7 +3,7 @@ - + Install SQLcl :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -263,7 +268,7 @@

Install SQLcl

@@ -289,8 +294,8 @@

Install SQLcl

- - - + + + diff --git a/cloudbank/images/favicon.png b/cloudbank/images/favicon.png new file mode 100755 index 000000000..1743a6bbc Binary files /dev/null and b/cloudbank/images/favicon.png differ diff --git a/cloudbank/index.html b/cloudbank/index.html index 3f749db35..86f6cd7e9 100644 --- a/cloudbank/index.html +++ b/cloudbank/index.html @@ -3,51 +3,52 @@ - + +What you will need To complete the modules you will somewhere to run Oracle Backend for Spring Boot and Microservices."> +What you will need To complete the modules you will somewhere to run Oracle Backend for Spring Boot and Microservices."> +What you will need To complete the modules you will somewhere to run Oracle Backend for Spring Boot and Microservices."> - +What you will need To complete the modules you will somewhere to run Oracle Backend for Spring Boot and Microservices."> + CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -310,7 +331,7 @@

Modules

@@ -336,8 +357,8 @@

Modules

- - - + + + diff --git a/cloudbank/index.search.js b/cloudbank/index.search.js index 039f3729b..073f7ec40 100644 --- a/cloudbank/index.search.js +++ b/cloudbank/index.search.js @@ -57,7 +57,7 @@ var relearn_search_index = [ }, { "breadcrumb": "CloudBank \u003e Provision an Instance", - "content": "This module walks you through the steps to provision an instance of the Oracle Backend for Spring Boot and Microservices.\nEstimated Time: 30 minutes\nAbout Oracle Backend for Spring Boot and Microservices Oracle Backend for Spring Boot and Microservices allows developers to build microservices in Spring Boot and provision a backend as a service with the Oracle Database and other infrastructure components that operate on multiple clouds. This service vastly simplifies the task of building, testing, and operating microservices platforms for reliable, secure, and scalable enterprise applications.\nObjectives In this lab, you will:\nProvision an instance of Oracle Backend for Spring Boot and Microservices. Prerequisites This module assumes you have:\nAn Oracle Cloud account in a tenancy with sufficient quota and privileges to create: An OCI Container Engine for Kubernetes cluster, plus a node pool with three worker nodes A VCN with at least two public IP’s available A public load balancer An Oracle Autonomous Database - Shared instance At least one free OCI Auth Token (note that the maximum is two per user) ", + "content": "This module walks you through the steps to provision an instance of the Oracle Backend for Spring Boot and Microservices.\nEstimated Time: 30 minutes\nAbout Oracle Backend for Spring Boot and Microservices Oracle Backend for Spring Boot and Microservices allows developers to build microservices in Spring Boot and provision a backend as a service with the Oracle Database and other infrastructure components that operate on multiple clouds. This service vastly simplifies the task of building, testing, and operating microservices platforms for reliable, secure, and scalable enterprise applications.\nThis module provides three options for running the environment:\nLocally in a container - you will need a container platform like Docker Desktop, Rancher Desktop, Podman Desktop or similar. This option is recommended only if you have at least 64GB of RAM. With less memory this option will probably be too slow. In a compute instance in an Oracle Cloud Free Tier account. You can sign up for an Oracle Cloud Free Tier account here. This account will include enough free credits to run CloudBank. In a commercial Oracle Cloud tenancy. If you have a commercial tenancy with sufficient capacity and privileges, you can run the full production-sized installation. This can be installed from the OCI Marketplace using the instructions in Module 1. Check the instructions for a more detailed list of requirements. Regardless of which option you choose, the remainder of the modules will be virtually identical.\nObjectives In this lab, you will:\nProvision an instance of Oracle Backend for Spring Boot and Microservices, either locally or in the cloud. Prerequisites This module assumes you have either:\nAn Oracle Cloud account in a tenancy with sufficient quota and privileges to create: An OCI Container Engine for Kubernetes cluster, plus a node pool with three worker nodes A VCN with at least two public IP’s available A public load balancer An Oracle Autonomous Database - Shared instance At least one free OCI Auth Token (note that the maximum is two per user), or An Oracle Cloud Free Tier account, or A local machine with enough memory (64GB recommneded) to run the environment locally. ", "description": "This module walks you through the steps to provision an instance of the Oracle Backend for Spring Boot and Microservices.\nEstimated Time: 30 minutes\nAbout Oracle Backend for Spring Boot and Microservices Oracle Backend for Spring Boot and Microservices allows developers to build microservices in Spring Boot and provision a backend as a service with the Oracle Database and other infrastructure components that operate on multiple clouds. This service vastly simplifies the task of building, testing, and operating microservices platforms for reliable, secure, and scalable enterprise applications.", "tags": [], "title": "Introduction", @@ -73,8 +73,8 @@ var relearn_search_index = [ }, { "breadcrumb": "CloudBank", - "content": "This is a new chapter.", - "description": "This is a new chapter.", + "content": "This module guides you through provisioning an Oracle Backend for Spring Boot environment either on your local machine, in the Oracle Cloud Free Tier, or in a commercial Oracle Cloud Tenancy.", + "description": "This module guides you through provisioning an Oracle Backend for Spring Boot environment either on your local machine, in the Oracle Cloud Free Tier, or in a commercial Oracle Cloud Tenancy.", "tags": [], "title": "Provision an Instance", "uri": "/microservices-datadriven/cloudbank/provision/index.html" @@ -89,8 +89,8 @@ var relearn_search_index = [ }, { "breadcrumb": "CloudBank", - "content": "xyz", - "description": "xyz", + "content": "This module guides you through setting up the tools required for a Spring Boot developer.", + "description": "This module guides you through setting up the tools required for a Spring Boot developer.", "tags": [], "title": "Developer Environment", "uri": "/microservices-datadriven/cloudbank/devenv/index.html" @@ -129,11 +129,11 @@ var relearn_search_index = [ }, { "breadcrumb": "CloudBank \u003e Provision an Instance", - "content": "The Oracle Backend for Spring Boot and Microservices can be installed from OCI Marketplace.\nNote: Oracle Backend for Spring Boot and Microservices can also be installed on-premises or in other clouds.\nAccess the Oracle Cloud Infrastructure Marketplace listing\nOpen the OCI Marketplace listing, as shown in the image below:\nClick on the Get App button.\nLog into your Oracle Cloud Infrastructure account\nYou will be taken to a Sign-In page. Choose they type of account you have and click on the Sign In button. If you did not create an account in the Get Started lab, you can do so now using the Sign Up button.\nSign in to your account as you normally do, using Single Sign-On or Direct Sign-In.\nChoose the region and compartment\nIn the next screen you can choose the region using the pull down in the top right hand corner, and then choose the compartment you want to install into.\nReview the terms and restrictions, and then click on the checkbox to accept them. Then, click on Launch Stack,\nNote: This Live module is tested with version 1.2.0. Earlier versions do not contain all features used in this Live Lab.\nReview the Create Stack page\nReview the details on the Create Stack page. You may wish to update the Name or add tags. When you are ready, click on Next.\nIn the Backend as A Service Section, fill in the following configuration variables as needed and select Next:\nCompartment : Select the compartment where you want to install Oracle Backend for Spring Boot and Microservices. Application Name (optional) : A random pet name that will be used as the application name if left empty. Edition : Select COMMUNITY Edition. Standard edition will give more options for the installation but those are not required or used in this LiveLab. Existing Authorization Token : Leave blank. If you check the checkbox Set Administrator Passwords in the Administrator Passwords section you have the option to fill in the following passwords (if not they are autogenerated):\nAPISIX Administrator Password (optional) : Leave blank to auto-generate. Grafana Administrator Password (optional) : Leave blank to auto-generate. ORACTL Administrator Password (optional) : Leave blank to auto-generate. This is the password for the obaas-admin user. ORACTL User Password (optional) : Leave blank to auto-generate. This is the password for the obaas-user user. In the Kubernetes Cluster Options. fill in the following for the OKE Clusters Options:\nPublic API Endpoint? : For the Live Lba you must check the checkbox Public API Endpoint API Endpoint Access Control : Enter the CIDR block you want to give access to the Control Plane API. Leave the default value 0.0.0.0/0. Node Pool Workers : The number of Kubernetes worker nodes (virtual machines) attached to the OKE cluster. Leave the default value of 3. Node Pool Worker Shape : The shape of the node pool workers. Leave the default Shape value. Node Workers OCPU : The initial number of Oracle Compute Units (OCPUs) for the node pool workers. Leave the default value of 2. NOTE: Oracle recommends that you set Control Plane Access Control to be as restrictive as possible\nIn the Load Balancers Options section, leave the default values.\nEnable Public Load Balancer : This option allows access to the load balancer from the internet (public IP). If not selected, access can only be from a private VCN. Public Load Balancer Access Control : Enter the CIDR block you want to give access to the Load Balancer. Default (and not recommended) is 0.0.0.0/0. Public Load Balancer Ports Exposed : The ports exposed from the load balancer. Minimum bandwidth : The minimum bandwidth that the load balancer can achieve. Maximum bandwidth : The maximum bandwidth that the load balancer can achieve. NOTE: Oracle recommends that you set Public Load Balancer Access Control to be as restrictive as possible.\nIn the Database Options section, leave the default values.\nAutonomous Database Compute Model : Choose either ECPU (default) or OCPU compute model for the ADB. Leave the default value of ECPU Autonomous Database Network Access : Choose the Autonomous Database network access. Leave the default value of SECURE_ACCESS ADB Access Control : Comma separated list of CIDR blocks from which the ADB can be accessed. This only applies if SECURE_ACCESS was chosen. Leave default value of 0.0.0.0/0. Autonomous Database ECPU Core Count : Choose how many ECPU cores will be elastically allocated. Leave default value of 2. Allow Autonomous Database OCPU Auto Scaling : Enable auto-scaling for the ADB ECPU core count (x3 ADB ECPU). Leave the default value of un-checked. Autonomous Database Data Storage Size : Choose ADB Database Data Storage Size in gigabytes. Leave the default value of 20GB. Autonomous Database License Model : The Autonomous Database license model. Leave the default value of LICENSE_INCLUDED. Create an Object Storage Bucket for ADB? : Leave the default value of un-checked. NOTE: Oracle recommends that you restrict by IP or CIDR addresses to be as restrictive as possible.\nClick Next to review your choices.\nComplete the Review page\nReview the details on the Review page. Check the box next to Run Apply. When you are ready, click on Create.\nReview the apply screen\nThe stack will now be applied. On the Apply screen (see below) you can monitor the progress of the installation in the Logs box. The installation should take about 30 minutes to complete. This includes the time needed to create your Oracle Autonomous Database instance, your Oracle Container Engine for Kubernetes cluster and install the various components of the stack into the Kubernetes cluster.\nNote: While you are waiting for the installation to complete is a great time to start setting up your development environment (see the next lab). You can come back here where you are done to check the installation completed successfully.", - "description": "The Oracle Backend for Spring Boot and Microservices can be installed from OCI Marketplace.\nNote: Oracle Backend for Spring Boot and Microservices can also be installed on-premises or in other clouds.\nAccess the Oracle Cloud Infrastructure Marketplace listing\nOpen the OCI Marketplace listing, as shown in the image below:\nClick on the Get App button.\nLog into your Oracle Cloud Infrastructure account\nYou will be taken to a Sign-In page. Choose they type of account you have and click on the Sign In button.", + "content": "This option allows you to run Oracle Backend for Spring Boot and Microservices in a containerized environment on your local machine. This option is recommended if you do have enough free capacity on your local machine to run the environment, a minimum of 64GB RAM and 80GB free disk are recommneded. This option provides an environment with adequeate resources for development and testing, but is not suitable for a production-sized deployment or performance testing.\nNote: You only need to choose one of the three deployment options - local, OCI Free Tier or OCI Marketplace.\nPrerequisites\nThe following prerequisites are required to run the local environment:\nA container runtime environment such as Docker Desktop, Rancher Desktop or Podman Desktop. The ability to run a BASH script, or to read one and run equivalent commands in your environment. 64GB RAM and 80GB free disk space. Download the required files\nIf you have not already done so, clone the Microservices Data-Driven GitHub repository:\ngit clone https://github.com/oracle/microservices-datadriven Change into the directory with the local environment files:\ncd microservices-datadriven/cloudbank-v4/local-environment Start the environment\nRun the provided script to start the environment, including a Kubernetes cluster in a container (using k3s), Oracle Backend for Spring Boot and Microservices and an Oracle Database instance inside that cluster.\n./obaas.sh It will take approximately six to ten minutes (depending on the size of your machine) for all of the containers to reach ready/running state. You can watch the progress using this command:\nwatch KUBECONFIG=$(pwd)/k3s_data/kubeconfig/kubeconfig.yaml kubectl get pod -A Note: You will need to provide the KUBECONFIG variable as shown, or export it in your shell, each time you wish to run a kubectl command to access the cluster.\nWhen the environment is fully started, the output will appear similar to this:\nVerify access to web user interfaces\nOn your local machine, open a browser and navigate to the Spring Operations Center.\nLog in using the pre-defined user obaas-admin and password Welcome-12345.\nNote: Since this is a development environment with no DNS name, it is configured with self-signed certificates. Your browser will warn you about the connection security.\nIf you are using Chrome, click on the Advanced link and then the Proceed to localhost (unsafe) link. If you are using a different browser, perform the equivalent actions.\nThe Spring Operations Center main dashboard will appear similar to this:", + "description": "This option allows you to run Oracle Backend for Spring Boot and Microservices in a containerized environment on your local machine. This option is recommended if you do have enough free capacity on your local machine to run the environment, a minimum of 64GB RAM and 80GB free disk are recommneded. This option provides an environment with adequeate resources for development and testing, but is not suitable for a production-sized deployment or performance testing.", "tags": [], - "title": "Install on OCI", - "uri": "/microservices-datadriven/cloudbank/provision/install/index.html" + "title": "Install locally", + "uri": "/microservices-datadriven/cloudbank/provision/install-local/index.html" }, { "breadcrumb": "CloudBank \u003e Manage Sagas", @@ -153,24 +153,16 @@ var relearn_search_index = [ }, { "breadcrumb": "CloudBank \u003e Cleanup", - "content": "The Oracle Backend for Spring Boot and Microservices environment was deployed using ORM and Terraform. The uninstall will use OCI Resource Manager (ORM) to Destroy the stack.\nNavigate to OCI Resource Manager Stacks\nMake sure you choose the Compartment where you installed Oracle Backend for Spring Boot and Microservices. Click on the Stack Name (which will be different from the screenshot)\nAfter picking the stack. Click destroy. NOTE This will stop all resources and remove the Oracle Backend for Spring Boot and Microservices environment. The only way to get it back is to re-deploy the stack\nConfirm that you want to shut down and destroy the resources\nIf the Terraform Destroy job fails, re-run the Destroy job again after a few minutes.\nLeft over resources Even after the Destroy job has finished there will be one resource left in the tenancy/compartment and that is an OCI Vault. The Vault is on PENDING DELETION mode.", - "description": "The Oracle Backend for Spring Boot and Microservices environment was deployed using ORM and Terraform. The uninstall will use OCI Resource Manager (ORM) to Destroy the stack.\nNavigate to OCI Resource Manager Stacks\nMake sure you choose the Compartment where you installed Oracle Backend for Spring Boot and Microservices. Click on the Stack Name (which will be different from the screenshot)\nAfter picking the stack. Click destroy. NOTE This will stop all resources and remove the Oracle Backend for Spring Boot and Microservices environment.", + "content": " Note: These steps apply only if you chose the option to install in a local container.\nStop the local container using this command:\ndocker stop obaas Note: If you want to use the environment again later, stop at this step. You can restart it later with the command docker start obaas.\nRemove the local container using this command:\ndocker rm obaas ", + "description": " Note: These steps apply only if you chose the option to install in a local container.\nStop the local container using this command:\ndocker stop obaas Note: If you want to use the environment again later, stop at this step. You can restart it later with the command docker start obaas.\nRemove the local container using this command:\ndocker rm obaas ", "tags": [], - "title": "Uninstall", - "uri": "/microservices-datadriven/cloudbank/cleanup/uninstall/index.html" - }, - { - "breadcrumb": "CloudBank \u003e Provision an Instance", - "content": " Check the logs for errors\nScroll down to the bottom of the log to see the outcome. If there was an error during installation, details will be included at the end of the log. The most common errors are due to insufficient quota for some resource. If you get an error about insufficient quota, you may need to clean up unused resources or request a quota increase for the affected resource. Once you have done that, navigate back to the stack details (for example, using the breadcrumbs) and click on the Apply to try again.\nWhen the installation completes normally, the end of the log should look something like this:\nApply complete! Resources: 77 added, 0 changed, 0 destroyed. Outputs: adb_ip = \"Secured Access\" adb_name = \"KATYDIDDB\" apisix_admin_password = \u003csensitive\u003e grafana_admin_password = \u003csensitive\u003e kubeconfig_cmd = \"oci ce cluster create-kubeconfig --cluster-id ocid1.cluster.oc1... --region us-ashburn-1 --token-version 2.0.0 --kube-endpoint PUBLIC_ENDPOINT --file $HOME/.kube/config\" oractl_admin_password = \u003csensitive\u003e oractl_user_password = \u003csensitive\u003eTo get the sensitive information you need to click on the Application Information tab, and click on unlock or show to display the values:\nNote: Keep a copy of the values, you will need these in later labs.\nVerify you can access the Kubernetes cluster\nIn later labs, you will look at various resources in Kubernetes. You will need a Kubernetes configuration file to access the cluster. For now, accessing the cluster from OCI Cloud Shell will be sufficient to verify the installation.\nOpen the OCI Cloud Shell by clicking on the icon next to the region in the top right corner of the console and then clicking on Cloud Shell.\nRun the command provided at the end of your installation log or the information from the Application Information tab,to obtain the Kubernetes configuration file. The command will be similar to this:\noci ce cluster create-kubeconfig --cluster-id ocid1.cluster.oc1.i..... --region us-ashburn-1 --token-version 2.0.0 --kube-endpoint PUBLIC_ENDPOINT --file $HOME/.kube/configCheck that you can access the cluster using this command:\n$ kubectl get pods -n obaas-admin NAME READY STATUS RESTARTS AGE graalvm-compiler-79988b886c-hgw68 1/1 Running 0 10m obaas-admin-66599b65-vb662 1/1 Running 0 10m soc-ui-5dbd6f9cb4-kjdj8 0/1 Running 0 10mYour output will be slightly different, but you should see one pod listed in the output. This is enough to confirm that you have correctly configured access to the Kubernetes cluster.\nVerify you can connect to the APISIX API Gateway\nYou will need to provide the correct IP address for the API Gateway in your backend environment. You can find the IP address using this command, you need the one listed in the EXTERNAL-IP column:\n$ kubectl -n ingress-nginx get service ingress-nginx-controller NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE ingress-nginx-controller LoadBalancer 10.123.10.127 EXTERNAL-IP 80:30389/TCP,443:30458/TCP 13dNow use this command (with your IP address in the column EXTERNAL-IP) to make a request to the API Gateway. You should receive a response with an HTTP Status Code 404 (Not Found) and an error message in JSON format as shown below. Don’t worry about the 404, you will deploy some services soon, but this test is enough to know the API Gateway started up successfully:\n$ curl -i http://\u003cEXTERNAL-IP\u003e\u003e HTTP/1.1 404 Date: Wed, 01 Mar 2023 19:21:08 GMT Content-Type: application/json Transfer-Encoding: chunked Connection: keep-alive Vary: Origin Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers {\"timestamp\":\"2023-03-01T19:21:08.031+00:00\",\"status\":404,\"error\":\"Not Found\",\"path\":\"/\"} ", - "description": "Check the logs for errors\nScroll down to the bottom of the log to see the outcome. If there was an error during installation, details will be included at the end of the log. The most common errors are due to insufficient quota for some resource. If you get an error about insufficient quota, you may need to clean up unused resources or request a quota increase for the affected resource.", - "tags": [], - "title": "Verify Installation", - "uri": "/microservices-datadriven/cloudbank/provision/verify/index.html" + "title": "Local cleanup", + "uri": "/microservices-datadriven/cloudbank/cleanup/uninstall-local/index.html" }, { "breadcrumb": "CloudBank", - "content": "This is a new chapter.", - "description": "This is a new chapter.", + "content": "This module walks you through building your very first microservice using Spring Boot. It assumes no prior knowledge of Spring Boot, so its a great place to start if you have not used Spring Boot before. This module demonstrates how to build a service with a synchronous API implemented as REST endpoints using Spring Web MVC, and how to store data in Oracle Database using Spring Data JPA.", + "description": "This module walks you through building your very first microservice using Spring Boot. It assumes no prior knowledge of Spring Boot, so its a great place to start if you have not used Spring Boot before. This module demonstrates how to build a service with a synchronous API implemented as REST endpoints using Spring Web MVC, and how to store data in Oracle Database using Spring Data JPA.", "tags": [], "title": "Account Microservice", "uri": "/microservices-datadriven/cloudbank/account/index.html" @@ -207,6 +199,14 @@ var relearn_search_index = [ "title": "Explore Oracle Autonomous Database", "uri": "/microservices-datadriven/cloudbank/backend/database/index.html" }, + { + "breadcrumb": "CloudBank \u003e Provision an Instance", + "content": "This option allows you to run Oracle Backend for Spring Boot and Microservices in a containerized environment inside a single OCI Compute Instance. This option is good if you do not have enough free capacity on your local machine to run the environment, and if you do not have or want to use the resources required for a full production-sized deployment. This option provides an environment with adequate resources for development and testing, but minimizes the resource usage and costs.\nNote: You only need to choose one of the three deployment options - local, OCI Free Tier or OCI Marketplace.\nGet an Oracle Cloud Free Tier account\nIf you do not already have one, you can obtain an Oracle Cloud Free Tier account as follows:\nOpen a browser and navigate to the Oracle Cloud Free Tier signup page. Complete the requested details and click on the Verify email button. You will receive an email from “Oracle Cloud” with instructions on how to verify your email address. On the Account Information page, enter the requested details. When completed, click on the Start my free trial button. You will need to wait a few minutes while your account is created and set up. When the set up is completed, you will see the login page. You will also receive an email confirmation. Log in to your new account. You may be asked to configured secure verification. Copy the custom compute image\nChoose a compartment in the drop down box on the left hand side of the OCI Console.\nNote: If you use or plan to use this OCI Cloud account for other purposes as well, Oracle recommends creating compartments to simplify management. You can create a compartment by navigating to the Compartments page in the Identity section of OCI Console. You can use the root compartment if you wish, but it is not generally recommended.\nNavigate to the Custom Instances page by opening the main menu using the “hamburger” icon ( ) in the top left corner of the console and searching for “image”:\nClick on the Import image button.\nChoose the option to Import from an Object Storage URL and provide the following URL in the Object Storage URL field:\nhttps://objectstorage.us-ashburn-1.oraclecloud.com/p/oSwRpU_9v5NGzkJ-P0qKzT1ZN-Y9lJZu1aXO_2N-rkGdJs-hKJt10bRk9TxsCceF/n/maacloud/b/cloudbank-public/o/obaas-1.3.0-2 (Important) Under Image type choose the OCI option.\nClick on the Import image button to start the import.\nNote: that it might take approximately 10 to 15 minutes to complete the import. You can see the progress on the Custom image details page that will be displayed.\nCreate a compute instance\nChoose a compartment in the drop down box on the left hand side of the OCI Console.\nNote: If you use or plan to use this OCI Cloud account for other purposes as well, Oracle recommends creating compartments to simplify management. You can create a compartment by navigating to the Compartments page in the Identity section of OCI Console. You can use the root compartment if you wish, but it is not generally recommended.\nNavigate to the Compute Instances page by clicking on the link on the home page of the OCI Console or opening the main menu using the “hamburger” icon ( ) in the top left corner of the console and searching for “instance”:\nCreate a Compute Instance by clicking on the Create instance button.\nEnter a name for the instance, for example obaas-instance.\nScroll down to the Image and shape section and click on the Change Image button to edit the details.\nIn the image source, choose the option for My ../images and choose the image the you imported in the previous step.\nNote: The image will not show up until the import is completed.\nClick on the Select image button to confirm your choice.\nClick on the Change shape button to choose the shape of your instance. Oracle recommends 2 OCPUs and 32 GB of memory to run this CloudBank environment.\nClick on the Select shape button to confirm your choice.\nLeave the default values in the Primary VNIC Section. By doing so a virtual network and subnets will be created for you.\nIn the SSH Keys section, make sure you provide SSH keys so you can log into your instance. You may provide an existing public key if you have one, or generate new keys.\nClick on the Create button to create the instance. The instance and the virtual network will be started, this will take a few moments.\nStart Oracle Backend for Spring Boot and Microservices\nNote the Public IP Address of your newly created instance in the Instance access section of the Instance details page that is displayed.\nLog into the compute instance using SSH, for example:\nssh -i \u003cpath and filename of private key\u003e -L 1443:localhost:443 ubuntu@207.211.186.88 You will need to use the IP address of your instance in this command. Note that the example command also creates a port forward so that you will be able to access various Web UI’s from your local machine.\nYou will be asked to confirm the authenticity of your SSH keys, enter yes.\nThe environment will start automatically, including a Kubernetes cluster in a container (using k3s), Oracle Backend for Spring Boot and Microservices and an Oracle Database instance inside that cluster. It will take approximately six minutes for all of the containers to reach ready/running state. You can watch the progress using this command:\nwatch kubectl get pod -A Note: Should you require access to it, the kubeconfig file for your cluster is located at this location:\n/home/ubuntu/obaas/k3s_data/kubeconfig/kubeconfig.yamlWhen the environment is fully started, the output will appear similar to this:\nVerify access to web user interfaces\nOn your local machine, open a browser and navigate to the Spring Operations Center.\nLog in using the pre-defined user obaas-admin and password Welcome-12345.\nNote: Since this is a development environment with no DNS name, it is configured with self-signed certificates. Your browser will warn you about the connection security.\nIf you are using Chrome, click on the Advanced link and then the Proceed to localhost (unsafe) link. If you are using a different browser, perform the equivalent actions.\nThe Spring Operations Center main dashboard will appear similar to this:", + "description": "This option allows you to run Oracle Backend for Spring Boot and Microservices in a containerized environment inside a single OCI Compute Instance. This option is good if you do not have enough free capacity on your local machine to run the environment, and if you do not have or want to use the resources required for a full production-sized deployment. This option provides an environment with adequate resources for development and testing, but minimizes the resource usage and costs.", + "tags": [], + "title": "Install in OCI Free Tier", + "uri": "/microservices-datadriven/cloudbank/provision/install-free-trial/index.html" + }, { "breadcrumb": "CloudBank \u003e Developer Environment", "content": "Oracle recommends the Java SE Development Kit. Themoduleis using Spring Boot 3.3.x so Java 21 is required.\nDownload and install the Java Development Kit\nDownload the latest x64 Java 21 Development Kit from Java SE Development Kit.\nDecompress the archive in your chosen location, e.g., your home directory and then add it to your path (the exact version of Java might differ in your environment):\nexport JAVA_HOME=$HOME/jdk-21.0.3 export PATH=$JAVA_HOME/bin:$PATH Verify the installation\nVerify the Java Development Kit is installed with this command (the exact version of Java might differ in your environment):\n$ java -version java version \"21.0.3\" 2022-04-19 LTS Java(TM) SE Runtime Environment (build 21.0.3+8-LTS-111) Java HotSpot(TM) 64-Bit Server VM (build 21.0.3+8-LTS-111, mixed mode, sharing) Note: Native Images: If you want to compile your Spring Boot microservices into native images, you must use GraalVM, which can be downloaded from here.", @@ -223,6 +223,14 @@ var relearn_search_index = [ "title": "Learn about Long Running Actions", "uri": "/microservices-datadriven/cloudbank/saga/learn-lra/index.html" }, + { + "breadcrumb": "CloudBank \u003e Cleanup", + "content": " Note: These steps apply only if you chose the option to install in OCI Free Tier.\nLogin into your OCI Free Trail account.\nDelete the Compute Instance.\nSelect the compartment where you installed the Compute instance in the drop down box on the left hand side of the OCI Console.\nNavigate to the Compute Instances page by clicking on the link on the home page of the OCI Console or opening the main menu using the “hamburger” icon ( ) in the top left corner of the console and searching for “instance”:\nClick on the compute instance name. The name of your instance will be different than the example below.\nClick on the Terminate button.\nIn the Terminate Instance dialog box it is VERY important that you select Permanently delete the attached boot volume.\nThe instance will now be terminated. This process will take a few minutes. When the status of the instance changes to terminated you can move on to the next step.\nDelete the Custom Image.\nSelect the compartment where you created the Custom image in the drop down box on the left hand side of the OCI Console.\nNavigate to the Custom Instances page by opening the main menu using the “hamburger” icon ( ) in the top left corner of the console and searching for “image”:\nClock in the three little dots on the right hand side of table and select Delete. And confirm by clicking the Delete button in the dialog box.\nThe custom image you created is now deleted.\nDelete the Virtual Cloud Network.\nSelect the compartment where you installed the Compute instance in the drop down box on the left hand side of the OCI Console.\nNavigate to the Virtual cloud networks page by clicking on the link on the home page of the OCI Console or opening the main menu using the “hamburger” icon ( ) in the top left corner of the console and searching for “instance”:\nClick on the network name.\nClick on the Delete button.\nIn the Delete Virtual Cloud Network dialog box, it is important that you select Specific Compartment and the compartment where you installed the VCN. Otherwise the scan will can all the compartments in the tenancy. Click on the Scan button.\nWhen the scan is complete, click on the Delete All button. Click the Close button when the deletion is complete.\nThe VCN you created is now deleted.", + "description": "Note: These steps apply only if you chose the option to install in OCI Free Tier.\nLogin into your OCI Free Trail account.\nDelete the Compute Instance.\nSelect the compartment where you installed the Compute instance in the drop down box on the left hand side of the OCI Console.\nNavigate to the Compute Instances page by clicking on the link on the home page of the OCI Console or opening the main menu using the “hamburger” icon ( ) in the top left corner of the console and searching for “instance”:", + "tags": [], + "title": "OCI Free Tier Cleanup", + "uri": "/microservices-datadriven/cloudbank/cleanup/uninstall-free-trial/index.html" + }, { "breadcrumb": "CloudBank \u003e Deploy with an IDE", "content": " If you have done the optional Task 11 of Lab. 2, you could proceed doing the activities from Task 3 to Task 5 using Oracle Backend for Spring Boot VS Code plugin. If you don’t see the plugin in the left bar, with the Oracle logo, as shown here:\nclick on Additional Views menu to select the Oracle Backend fo Spring Boot and Microservices.\nThe Oracle Backend fo Spring Boot and Microservices VS Code plugin will ask to specify the Kubernetes config file full path as shown here:\nBy default, it’s shown the path in the user’s Home directory .kube/config in which normally kubectl stores all the information regarding the K8S clusters configured. You could set the full path of another Kubernetes config file. If the file is correctly loaded, the plugin will show the list of contexts available in which select one:\nIn positive case, you should see a tree view with one node and the context chosen:\nIf the file path it hasn’t been correctly set, it will show an error message:\nTo restart the plugin and proceed again in Kubernetes config file setting, in command palette execute a Reload Window command:\nHow to access to cluster\nUntil you create a dedicated ssh tunnel to the Kubernetes cluster, and you don’t connect to Oracle Backend for Spring Boot admin services, you will not be able to browse resources included into the Oracle Backend for Spring Boot deployment. To do this, follow these steps:\nObtain the obaas-admin password by executing the following command in a terminal window to get the obaas-admin password:\n$ \u003ccopy\u003ekubectl get secret -n azn-server oractl-passwords -o jsonpath='{.data.admin}' | base64 -d\u003c/copy\u003e Right-click on the cluster name and select Set UID/PWD:\nEnter the username obaas-admin for the Oracle Backend for Spring Boot.\nFollowed by the password you obtained in an earlier step:\nTwo message boxes will confirm credentials have been set correctly:\nWARNING: if you don’t execute this steps and try to expand the kubernetes context, you will receive a message:\nSelect again the cluster and click the right mouse button and choose Create Admin tunnel menu item.\nVS Code will open a new terminal that will try to open a tunnel to the Kubernetes cluster on a local port, starting from 8081:\nBefore proceed to connection, please wait until the tunnel is established and the terminal shows a message like this:\nNOTE: if the K8s cluster it’s not related to an Oracle Backend for Spring Boot deployment, the tunnel creation will fail. In this case in command palette execute a window reload too chose another cluster. If you have any problem in connection, you could start another tunnel: the plugin will try on another local port to connect to the cluster.\nAgain select the cluster and by clicking the right mouse button choose Connect menu item. This will create a session with credentials set at the first step.\nExplore resources\nAs soon as completed the steps to create tunnel, and you get connected to the backend, it’s possible to expand or refresh the tree related to the deployment.\nYou’ll see four top classes of resources that can be exploded in underlying items:\napplications: the list of applications deployed and the services holding Oracle DB: in this release we have one Database in which are stored configuration and schema related to services deployed platformServices: the list of Oracle Backend for Spring Boot deployed services, like Grafana, Spring, Apisix, Eureka and Jaeger. oBaasConf: the list of keys defined by application, stored in the ADB provisioned and available to share configuration information among services in each application. Let’s go to show the operations you can do on each item of browse tree.\nOpen the list clicking on the arrow at the left of applications, and then expand the application about you want to know which services includes:\nit should be empty. If not, proceed to delete the full application and re-create it through the plug-in:\nFirst, select the default application and with right-click on mouse, select Delete application:\nWait a moment and refresh the content of applications leaf. When empty, select applications and with right-click on mouse, select Add application:\nFill in the command palette the (application name) with application:\nThe four Spring Boot microservices deployment\nFirst it must be bind the service if the case. For account service you have to:\nSelect applications leaf and with right click select Bind a service item menu:\nand the input following values:\nService Name: account DB User (optional): DB User Password: Welcome1234## Spring Binding Prefix (optional): spring.datasource Update: False you’ll get the message:\nRepeat the same for:\nchecks service you have to:\nService Name: checks DB User (optional): account DB User Password: Welcome1234## Spring Binding Prefix (optional): spring.datasource Update: False customer service you have to:\nService Name: customer DB User (optional): DB User Password: Welcome1234## Spring Binding Prefix (optional): spring.datasource Update: False testrunner service you have to:\nService Name: testrunner DB User (optional): account DB User Password: Welcome1234## Spring Binding Prefix (optional): spring.datasource Update: False Ensure to get the message like this for all previous binding:\nLet’s start with the first service deployment:\nSelect application under applications and Right-click on mouse to select Add service -\u003e upload .jar:\nLook for the accounts-0.0.1-SNAPSHOT.jar file built previously:\nIn the command palette will be asked all the parameters needed to upload the services:\nService Name : account\nBind [jms] : ``\nImage Version: 0.0.1\nJava Image: leave default ghcr.io/graalvm/jdk:ol7-java17-22.2.0\nAdd Health probe?: False\nService Port: leave default 8080\nService Profile: leave default obaas\nInitial Replicas : 1\nInform the database name for Liquibase: admin\nYou will see messages that confirm the deployment is started:\nFinally, you’ll receive the message “Service deployed successfully”:\nRefreshing the application leaf, you should see now:\nRepeat the same for:\nchecks service deployment:\nLook for the checks-0.0.1-SNAPSHOT.jar file built previously Service Name : checks Bind [jms] : `` Image Version: 0.0.1 Java Image: leave default ghcr.io/graalvm/jdk:ol7-java17-22.2.0 Add Health probe?: False Service Port: leave default 8080 Service Profile: leave default obaas Initial Replicas : 1 Inform the database name for Liquibase: admin customer service deployment:\nLook for the customer-0.0.1-SNAPSHOT.jar file built previously Service Name : customer Bind [jms] : `` Image Version: 0.0.1 Java Image: leave default ghcr.io/graalvm/jdk:ol7-java17-22.2.0 Add Health probe?: False Service Port: leave default 8080 Service Profile: leave default obaas Initial Replicas : 1 Inform the database name for Liquibase: admin creditscore service deployment:\nLook for the creditscore-0.0.1-SNAPSHOT.jar file built previously Service Name : creditscore Bind [jms] : `` Image Version: 0.0.1 Java Image: leave default ghcr.io/graalvm/jdk:ol7-java17-22.2.0 Add Health probe?: False Service Port: leave default 8080 Service Profile: leave default obaas Initial Replicas : 1 Inform the database name for Liquibase: `` testrunner service deployment:\nLook for the testrunner-0.0.1-SNAPSHOT.jar file built previously Service Name : testrunner Bind [jms] : `` Image Version: 0.0.1 Java Image: leave default ghcr.io/graalvm/jdk:ol7-java17-22.2.0 Add Health probe?: False Service Port: leave default 8080 Service Profile: leave default obaas Initial Replicas : 1 Inform the database name for Liquibase: `` transfer service deployment:\nLook for the transfer-0.0.1-SNAPSHOT.jar file built previously Service Name : transfer Bind [jms] : `` Image Version: 0.0.1 Java Image: leave default ghcr.io/graalvm/jdk:ol7-java17-22.2.0 Add Health probe?: False Service Port: leave default 8080 Service Profile: leave default obaas Initial Replicas : 1 Inform the database name for Liquibase: `` Be sure to receive for all the deployments a message that confirms the deployment is started and finally “Service deployed successfully”.\nNow we have the three services up \u0026 running as you should see from VS Code plug-in:\nVerify that the services are running properly by executing this command:\n$ \u003ccopy\u003ekubectl get all -n application\u003c/copy\u003eThe output should be similar to this, all applications must have STATUS as Running\n(base) cdebari@cdebari-mac ~ % kubectl get all -n application NAME READY STATUS RESTARTS AGE pod/account-777c6b57dc-mgnq9 1/1 Running 0 17m pod/checks-65cf5f77f9-nfqt4 1/1 Running 0 15m pod/creditscore-648fd868ff-twjsl 1/1 Running 0 9m43s pod/customer-5dc57bc575-2n6mf 1/1 Running 0 13m pod/testrunner-7df6f8f4c5-6t6gf 1/1 Running 0 8m50s pod/transfer-59d9c55df5-llppn 1/1 Running 0 7m57s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/account ClusterIP 10.96.140.242 \u003cnone\u003e 8080/TCP 17m service/checks ClusterIP 10.96.61.226 \u003cnone\u003e 8080/TCP 15m service/creditscore ClusterIP 10.96.97.155 \u003cnone\u003e 8080/TCP 9m44s service/customer ClusterIP 10.96.118.193 \u003cnone\u003e 8080/TCP 13m service/testrunner ClusterIP 10.96.235.62 \u003cnone\u003e 8080/TCP 8m51s service/transfer ClusterIP 10.96.98.16 \u003cnone\u003e 8080/TCP 7m58s NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/account 1/1 1 1 17m deployment.apps/checks 1/1 1 1 15m deployment.apps/creditscore 1/1 1 1 9m44s deployment.apps/customer 1/1 1 1 13m deployment.apps/testrunner 1/1 1 1 8m51s deployment.apps/transfer 1/1 1 1 7m58s NAME DESIRED CURRENT READY AGE replicaset.apps/account-777c6b57dc 1 1 1 17m replicaset.apps/checks-65cf5f77f9 1 1 1 15m replicaset.apps/creditscore-648fd868ff 1 1 1 9m44s replicaset.apps/customer-5dc57bc575 1 1 1 13m replicaset.apps/testrunner-7df6f8f4c5 1 1 1 8m51s replicaset.apps/transfer-59d9c55df5 1 1 1 7m58s Expose the services using APISIX Gateway\nExecute the same actions as described in Lab. 5, Task 5 except for the step 4., that it could be executed in the following alternative way, accessing comfortably to the APISIX admin console straight from VS Code.\nSelect under platformServices the leaf apisix and, with a right-click on mouse, select Open Apisix console:\nIt will open a terminal window in which it will be started a tunneling to that service, that will end opening a message box with a button you can click to open the APISIX admin console in a new browser:", @@ -233,8 +241,8 @@ var relearn_search_index = [ }, { "breadcrumb": "CloudBank", - "content": "This is a new chapter.", - "description": "This is a new chapter.", + "content": "In this module, you will build microservices that use asynchronous messaging to communicate using Spring JMS and Oracle Transactional Event Queues. It introduces service discovery using Eureka Service Registry (part of Spring Cloud Netflix) and Spring Cloud OpenFeign.", + "description": "In this module, you will build microservices that use asynchronous messaging to communicate using Spring JMS and Oracle Transactional Event Queues. It introduces service discovery using Eureka Service Registry (part of Spring Cloud Netflix) and Spring Cloud OpenFeign.", "tags": [], "title": "Check Processing", "uri": "/microservices-datadriven/cloudbank/check/index.html" @@ -271,6 +279,14 @@ var relearn_search_index = [ "title": "Implement First Service", "uri": "/microservices-datadriven/cloudbank/account/first-service/index.html" }, + { + "breadcrumb": "CloudBank \u003e Provision an Instance", + "content": "The Oracle Backend for Spring Boot and Microservices can be installed from OCI Marketplace.\nNote: You only need to choose one of the three deployment options - local, OCI Free Tier or OCI Marketplace.\nAccess the Oracle Cloud Infrastructure Marketplace listing\nOpen the OCI Marketplace listing, as shown in the image below:\nClick on the Get App button.\nLog into your Oracle Cloud Infrastructure account\nYou will be taken to a Sign-In page. Choose they type of account you have and click on the Sign In button. If you did not create an account in the Get Started lab, you can do so now using the Sign Up button.\nSign in to your account as you normally do, using Single Sign-On or Direct Sign-In.\nChoose the region and compartment\nIn the next screen you can choose the region using the pull down in the top right hand corner, and then choose the compartment you want to install into.\nReview the terms and restrictions, and then click on the checkbox to accept them. Then, click on Launch Stack,\nNote: This version of CloudBank is tested with version 1.3.0. Earlier versions may not contain all features used and you may see errors.\nReview the Create Stack page\nReview the details on the Create Stack page. You may wish to update the Name or add tags. When you are ready, click on Next.\nIn the Backend as A Service Section, fill in the following configuration variables as needed and select Next:\nCompartment : Select the compartment where you want to install Oracle Backend for Spring Boot and Microservices. Application Name (optional) : A random pet name that will be used as the application name if left empty. Edition : Select COMMUNITY Edition. Standard edition will give more options for the installation but those are not required or used in this LiveLab. Existing Authorization Token : Leave blank. If you check the checkbox Set Administrator Passwords in the Administrator Passwords section you have the option to fill in the following passwords (if not they are autogenerated):\nAPISIX Administrator Password (optional) : Leave blank to auto-generate. Grafana Administrator Password (optional) : Leave blank to auto-generate. ORACTL Administrator Password (optional) : Leave blank to auto-generate. This is the password for the obaas-admin user. ORACTL User Password (optional) : Leave blank to auto-generate. This is the password for the obaas-user user. In the Kubernetes Cluster Options. fill in the following for the OKE Clusters Options:\nPublic API Endpoint? : For the Live Lba you must check the checkbox Public API Endpoint API Endpoint Access Control : Enter the CIDR block you want to give access to the Control Plane API. Leave the default value 0.0.0.0/0. Node Pool Workers : The number of Kubernetes worker nodes (virtual machines) attached to the OKE cluster. Leave the default value of 3. Node Pool Worker Shape : The shape of the node pool workers. Leave the default Shape value. Node Workers OCPU : The initial number of Oracle Compute Units (OCPUs) for the node pool workers. Leave the default value of 2. NOTE: Oracle recommends that you set Control Plane Access Control to be as restrictive as possible\nIn the Load Balancers Options section, leave the default values.\nEnable Public Load Balancer : This option allows access to the load balancer from the internet (public IP). If not selected, access can only be from a private VCN. Public Load Balancer Access Control : Enter the CIDR block you want to give access to the Load Balancer. Default (and not recommended) is 0.0.0.0/0. Public Load Balancer Ports Exposed : The ports exposed from the load balancer. Minimum bandwidth : The minimum bandwidth that the load balancer can achieve. Maximum bandwidth : The maximum bandwidth that the load balancer can achieve. NOTE: Oracle recommends that you set Public Load Balancer Access Control to be as restrictive as possible.\nIn the Database Options section, leave the default values.\nAutonomous Database Compute Model : Choose either ECPU (default) or OCPU compute model for the ADB. Leave the default value of ECPU Autonomous Database Network Access : Choose the Autonomous Database network access. Leave the default value of SECURE_ACCESS ADB Access Control : Comma separated list of CIDR blocks from which the ADB can be accessed. This only applies if SECURE_ACCESS was chosen. Leave default value of 0.0.0.0/0. Autonomous Database ECPU Core Count : Choose how many ECPU cores will be elastically allocated. Leave default value of 2. Allow Autonomous Database OCPU Auto Scaling : Enable auto-scaling for the ADB ECPU core count (x3 ADB ECPU). Leave the default value of un-checked. Autonomous Database Data Storage Size : Choose ADB Database Data Storage Size in gigabytes. Leave the default value of 20GB. Autonomous Database License Model : The Autonomous Database license model. Leave the default value of LICENSE_INCLUDED. Create an Object Storage Bucket for ADB? : Leave the default value of un-checked. NOTE: Oracle recommends that you restrict by IP or CIDR addresses to be as restrictive as possible.\nClick Next to review your choices.\nComplete the Review page\nReview the details on the Review page. Check the box next to Run Apply. When you are ready, click on Create.\nReview the apply screen\nThe stack will now be applied. On the Apply screen (see below) you can monitor the progress of the installation in the Logs box. The installation should take about 30 minutes to complete. This includes the time needed to create your Oracle Autonomous Database instance, your Oracle Container Engine for Kubernetes cluster and install the various components of the stack into the Kubernetes cluster.\nNote: While you are waiting for the installation to complete is a great time to start setting up your development environment (see the next lab). You can come back here where you are done to check the installation completed successfully.\nVerify the installation Check the logs for errors\nScroll down to the bottom of the log to see the outcome. If there was an error during installation, details will be included at the end of the log. The most common errors are due to insufficient quota for some resource. If you get an error about insufficient quota, you may need to clean up unused resources or request a quota increase for the affected resource. Once you have done that, navigate back to the stack details (for example, using the breadcrumbs) and click on the Apply to try again.\nWhen the installation completes normally, the end of the log should look something like this:\nApply complete! Resources: 77 added, 0 changed, 0 destroyed. Outputs: adb_ip = \"Secured Access\" adb_name = \"KATYDIDDB\" apisix_admin_password = \u003csensitive\u003e grafana_admin_password = \u003csensitive\u003e kubeconfig_cmd = \"oci ce cluster create-kubeconfig --cluster-id ocid1.cluster.oc1... --region us-ashburn-1 --token-version 2.0.0 --kube-endpoint PUBLIC_ENDPOINT --file $HOME/.kube/config\" oractl_admin_password = \u003csensitive\u003e oractl_user_password = \u003csensitive\u003eTo get the sensitive information you need to click on the Application Information tab, and click on unlock or show to display the values:\nNote: Keep a copy of the values, you will need these in later labs.\nVerify you can access the Kubernetes cluster\nIn later labs, you will look at various resources in Kubernetes. You will need a Kubernetes configuration file to access the cluster. For now, accessing the cluster from OCI Cloud Shell will be sufficient to verify the installation.\nOpen the OCI Cloud Shell by clicking on the icon next to the region in the top right corner of the console and then clicking on Cloud Shell.\nRun the command provided at the end of your installation log or the information from the Application Information tab,to obtain the Kubernetes configuration file. The command will be similar to this:\noci ce cluster create-kubeconfig --cluster-id ocid1.cluster.oc1.i..... --region us-ashburn-1 --token-version 2.0.0 --kube-endpoint PUBLIC_ENDPOINT --file $HOME/.kube/configCheck that you can access the cluster using this command:\n$ kubectl get pods -n obaas-admin NAME READY STATUS RESTARTS AGE graalvm-compiler-79988b886c-hgw68 1/1 Running 0 10m obaas-admin-66599b65-vb662 1/1 Running 0 10m soc-ui-5dbd6f9cb4-kjdj8 0/1 Running 0 10mYour output will be slightly different, but you should see one pod listed in the output. This is enough to confirm that you have correctly configured access to the Kubernetes cluster.\nVerify you can connect to the APISIX API Gateway\nYou will need to provide the correct IP address for the API Gateway in your backend environment. You can find the IP address using this command, you need the one listed in the EXTERNAL-IP column:\n$ kubectl -n ingress-nginx get service ingress-nginx-controller NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE ingress-nginx-controller LoadBalancer 10.123.10.127 EXTERNAL-IP 80:30389/TCP,443:30458/TCP 13dNow use this command (with your IP address in the column EXTERNAL-IP) to make a request to the API Gateway. You should receive a response with an HTTP Status Code 404 (Not Found) and an error message in JSON format as shown below. Don’t worry about the 404, you will deploy some services soon, but this test is enough to know the API Gateway started up successfully:\n$ curl -i http://\u003cEXTERNAL-IP\u003e\u003e HTTP/1.1 404 Date: Wed, 01 Mar 2023 19:21:08 GMT Content-Type: application/json Transfer-Encoding: chunked Connection: keep-alive Vary: Origin Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers {\"timestamp\":\"2023-03-01T19:21:08.031+00:00\",\"status\":404,\"error\":\"Not Found\",\"path\":\"/\"} ", + "description": "The Oracle Backend for Spring Boot and Microservices can be installed from OCI Marketplace.\nNote: You only need to choose one of the three deployment options - local, OCI Free Tier or OCI Marketplace.\nAccess the Oracle Cloud Infrastructure Marketplace listing\nOpen the OCI Marketplace listing, as shown in the image below:\nClick on the Get App button.\nLog into your Oracle Cloud Infrastructure account\nYou will be taken to a Sign-In page.", + "tags": [], + "title": "Install from OCI Marketplace", + "uri": "/microservices-datadriven/cloudbank/provision/install-mp/index.html" + }, { "breadcrumb": "CloudBank \u003e Developer Environment", "content": "You can use either Maven or Gradle to build your Spring Boot applications. If you prefer Maven, follow the steps in this task. If you prefer Gradle, skip to the next task instead.\nDownload Maven\nDownload Maven from the Apache Maven website.\nInstall Maven\nDecompress the archive in your chosen location, e.g., your home directory and then add it to your path (the exact version of maven might differ in your environment):\n$ export PATH=$HOME/apache-maven-3.8.6/bin:$PATH Verify installation\nYou can verify it is installed with this command (note that your version may give slightly different output):\n$ mvn -v Apache Maven 3.8.6 (84538c9988a25aec085021c365c560670ad80f63) Maven home: /home/mark/apache-maven-3.8.6 Java version: 21.0.3, vendor: Oracle Corporation, runtime: /home/mark/jdk-21.0.3 Default locale: en, platform encoding: UTF-8 OS name: \"linux\", version: \"5.10.102.1-microsoft-standard-wsl2\", arch: \"amd64\", family: \"unix\" ", @@ -279,6 +295,14 @@ var relearn_search_index = [ "title": "Install Maven", "uri": "/microservices-datadriven/cloudbank/devenv/maven/index.html" }, + { + "breadcrumb": "CloudBank \u003e Cleanup", + "content": " Note: These steps apply only if you chose the option to install the full stack from OCI Marketplace.\nThe Oracle Backend for Spring Boot and Microservices environment was deployed using ORM and Terraform. The uninstall will use OCI Resource Manager (ORM) to Destroy the stack.\nNavigate to OCI Resource Manager Stacks\nMake sure you choose the Compartment where you installed Oracle Backend for Spring Boot and Microservices. Click on the Stack Name (which will be different from the screenshot)\nAfter picking the stack. Click destroy. NOTE This will stop all resources and remove the Oracle Backend for Spring Boot and Microservices environment. The only way to get it back is to re-deploy the stack\nConfirm that you want to shut down and destroy the resources\nIf the Terraform Destroy job fails, re-run the Destroy job again after a few minutes.\nLeft over resources Even after the Destroy job has finished there will be one resource left in the tenancy/compartment and that is an OCI Vault. The Vault is on PENDING DELETION mode.", + "description": "Note: These steps apply only if you chose the option to install the full stack from OCI Marketplace.\nThe Oracle Backend for Spring Boot and Microservices environment was deployed using ORM and Terraform. The uninstall will use OCI Resource Manager (ORM) to Destroy the stack.\nNavigate to OCI Resource Manager Stacks\nMake sure you choose the Compartment where you installed Oracle Backend for Spring Boot and Microservices. Click on the Stack Name (which will be different from the screenshot)", + "tags": [], + "title": "OCI Marketplace Uninstall", + "uri": "/microservices-datadriven/cloudbank/cleanup/uninstall-mp/index.html" + }, { "breadcrumb": "CloudBank \u003e Manage Sagas", "content": "You will update the Account service that you built in the previous module to add some new endpoints to perform deposits and withdrawals. These new endpoints will be LRA participants.\nAdd new dependencies to the Maven POM Open the pom.xml in your accounts project and add these new dependency to the list. It will add support for the LRA client libraries.\n```xml \u003cdependency\u003e \u003cgroupId\u003ecom.oracle.microtx.lra\u003c/groupId\u003e \u003cartifactId\u003emicrotx-lra-spring-boot-starter\u003c/artifactId\u003e \u003cversion\u003e23.4.2\u003c/version\u003e \u003c/dependency\u003e ``` Update the Spring Boot application configuration file Update your Account service’s Spring Boot configuration file, application.yaml in src/main/resources. Add a new lra section with the URL for the LRA coordinator. The URL shown here is for the Oracle Transaction Manager for Microservices that was installed as part of the Oracle Backend for Spring Boot and Microservices. Note: This URL is from the point of view of a service running it the same Kubernetes cluster.\n```yaml microtx: lra: coordinator-url: ${MP_LRA_COORDINATOR_URL} propagation-active: true headers-propagation-prefix: \"{x-b3-, oracle-tmm-, authorization, refresh-}\" ``` Check the Journal repository and model Create a new Java file called Journal.java in src/main/com/example/accounts/model to define the model for the journal table. There are no new concepts in this class, so here is the code:\n```java package com.example.accounts.model; import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; import jakarta.persistence.Table; import lombok.Data; import lombok.NoArgsConstructor; @Entity @Table(name = \"JOURNAL\") @Data @NoArgsConstructor public class Journal { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = \"JOURNAL_ID\") private long journalId; // type is withdraw or deposit @Column(name = \"JOURNAL_TYPE\") private String journalType; @Column(name = \"ACCOUNT_ID\") private long accountId; @Column(name = \"LRA_ID\") private String lraId; @Column(name = \"LRA_STATE\") private String lraState; @Column(name = \"JOURNAL_AMOUNT\") private long journalAmount; public Journal(String journalType, long accountId, long journalAmount) { this.journalType = journalType; this.accountId = accountId; this.journalAmount = journalAmount; } public Journal(String journalType, long accountId, long journalAmount, String lraId, String lraState) { this.journalType = journalType; this.accountId = accountId; this.lraId = lraId; this.lraState = lraState; this.journalAmount = journalAmount; } } ``` Open the file called JournalRepository.java in src/main/java/com/example/accounts/repository and add one JPA method findJournalByLraIdAndJournalType() to the interface. Here is the code:\n```java package com.example.accounts.repository; import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; import com.example.accounts.model.Journal; public interface JournalRepository extends JpaRepository\u003cJournal, Long\u003e { List\u003cJournal\u003e findJournalByAccountId(long accountId); Journal findJournalByLraIdAndJournalType(String lraId, String journalType); } ``` That completes the JPA configuration.", @@ -329,8 +353,8 @@ var relearn_search_index = [ }, { "breadcrumb": "CloudBank", - "content": "This is a new chapter.", - "description": "This is a new chapter.", + "content": "This module introduces the Saga pattern, a very important pattern that helps us manage data consistency across microservices. We will explore the Long Running Action specification, one implementation of the Saga pattern, and then build a Transfer microservice that will manage funds transfers using a saga.", + "description": "This module introduces the Saga pattern, a very important pattern that helps us manage data consistency across microservices. We will explore the Long Running Action specification, one implementation of the Saga pattern, and then build a Transfer microservice that will manage funds transfers using a saga.", "tags": [], "title": "Manage Sagas", "uri": "/microservices-datadriven/cloudbank/saga/index.html" @@ -343,6 +367,14 @@ var relearn_search_index = [ "title": "Prepare Database Objects", "uri": "/microservices-datadriven/cloudbank/account/prepare-database/index.html" }, + { + "breadcrumb": "CloudBank", + "content": "This modules introduces Spring AI and explores how it can be used to build a CloudBank AI Assistant (chatbot) that will allow users to interact with CloudBank using a chat-based interface. In this module, you will learn about Retrieval Augmented Generation, Vector Database and AI Agents.", + "description": "This modules introduces Spring AI and explores how it can be used to build a CloudBank AI Assistant (chatbot) that will allow users to interact with CloudBank using a chat-based interface. In this module, you will learn about Retrieval Augmented Generation, Vector Database and AI Agents.", + "tags": [], + "title": "CloudBank AI Assistant", + "uri": "/microservices-datadriven/cloudbank/springai/index.html" + }, { "breadcrumb": "CloudBank \u003e Manage Sagas", "content": "The Data Access Object pattern is considered a best practice, and it allows separation of business logic from the persistence layer. In this task, you will create an Account Data Access Object (DAO) that hides the complexity of the persistence layer logic from the business layer services. Additionally, it establishes methods that can be reused by each business layer service that needs to operate on accounts - in this module there will be two such services - deposit and withdraw.\nCreate the DAO class Create a new Java file called AccountTransferDAO.java in src/main/java/com/example/accounts/services. This class will contain common data access methods that are needed by multiple participants. You will implement this class using the singleton pattern so that there will only be one instance of this class.\nHere is the code to set up the class and implement the singleton pattern:\n```java package com.example.accounts.services; import com.example.accounts.model.Account; import com.example.accounts.model.Journal; import com.example.accounts.repository.AccountRepository; import com.example.accounts.repository.JournalRepository; import com.oracle.microtx.springboot.lra.annotation.ParticipantStatus; import lombok.extern.slf4j.Slf4j; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; @Component public class AccountTransferDAO { private static AccountTransferDAO singleton; final AccountRepository accountRepository; final JournalRepository journalRepository; /** * Initialize account and journal repository. * @param accountRepository Account Repository * @param journalRepository Journal Repository */ public AccountTransferDAO(AccountRepository accountRepository, JournalRepository journalRepository) { this.accountRepository = accountRepository; this.journalRepository = journalRepository; singleton = this; log.info(\"AccountTransferDAO accountsRepository = \" + accountRepository + \", journalRepository = \" + journalRepository); } public static AccountTransferDAO instance() { return singleton; } } ``` Create a method to get the LRA status as a String Create a getStatusString method which can be used to get a String representation of the LRA participant status.\n```java /** * Get status od LRA participant. * @param status Status code * @return Returns status code */ public static String getStatusString(ParticipantStatus status) { return switch (status) { case Compensated -\u003e \"Compensated\"; case Completed -\u003e \"Completed\"; case FailedToCompensate -\u003e \"Failed to Compensate\"; case FailedToComplete -\u003e \"Failed to Complete\"; case Active -\u003e \"Active\"; case Compensating -\u003e \"Compensating\"; case Completing -\u003e \"Completing\"; default -\u003e \"Unknown\"; }; } ``` Create a method to get the LRA status from a String Create a getStatusFromString method to convert back from the String to the enum.\n```java /** * Get LRA Status from a string. * @param statusString Status * @return Participant Status */ public static ParticipantStatus getStatusFromString(String statusString) { return switch (statusString) { case \"Compensated\" -\u003e ParticipantStatus.Compensated; case \"Completed\" -\u003e ParticipantStatus.Completed; case \"Failed to Compensate\" -\u003e ParticipantStatus.FailedToCompensate; case \"Failed to Complete\" -\u003e ParticipantStatus.FailedToComplete; case \"Active\" -\u003e ParticipantStatus.Active; case \"Compensating\" -\u003e ParticipantStatus.Compensating; case \"Completing\" -\u003e ParticipantStatus.Completing; default -\u003e null; }; } ``` Create a method to save an account Create a method to save an account in the account repository.\n```java public void saveAccount(Account account) { log.info(\"saveAccount account\" + account.getAccountId() + \" account\" + account.getAccountBalance()); accountRepository.save(account); } ``` Create a method to return the correct HTTP Status Code for an LRA status.\n```java /** * Return the correct HTTP Status Code for an LRA status * @param lraId LRA Id * @param journalType Journal Type * @return Participant Status * @throws Exception Exception */ public ResponseEntity\u003cParticipantStatus\u003e status(String lraId, String journalType) throws Exception { Journal journal = getJournalForLRAid(lraId, journalType); if (AccountTransferDAO.getStatusFromString(journal.getLraState()).equals(ParticipantStatus.Compensated)) { return ResponseEntity.ok(ParticipantStatus.Compensated); } else { return ResponseEntity.ok(ParticipantStatus.Completed); } } ``` Create a method to update the LRA status in the journal Create a method to update the LRA status in the journal table during the “after LRA” phase.\n```java /** * Update the LRA status in the journal table during the \"after LRA\" phase. * @param lraId LRA Id * @param status Status * @param journalType Journal Type * @throws Exception Exception */ public void afterLRA(String lraId, String status, String journalType) throws Exception { Journal journal = getJournalForLRAid(lraId, journalType); journal.setLraState(status); journalRepository.save(journal); } ``` Create methods to manage accounts Create a method to get the account for a given account ID.\n```java Account getAccountForAccountId(long accountId) { Account account = accountRepository.findByAccountId(accountId); if (account == null) return null; return account; } ``` Create a method to get the account that is related to a journal entry.\n```java Account getAccountForJournal(Journal journal) throws Exception { Account account = accountRepository.findByAccountId(journal.getAccountId()); if (account == null) throw new Exception(\"Invalid accountName:\" + journal.getAccountId()); return account; } ``` Update AccountRepository.java in src/main/java/com/example/accounts/repositories to add these extra JPA methods. Your updated file should look like this:\n```java package com.example.accounts.repository; import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; import com.example.accounts.model.Account; public interface AccountRepository extends JpaRepository\u003cAccount, Long\u003e { List\u003cAccount\u003e findByAccountCustomerId(String customerId); List\u003cAccount\u003e findAccountsByAccountNameContains (String accountName); Account findByAccountId(long accountId); } ``` Create methods to manage the journal Back in the AccountTransferDAO, create a method to get the journal entry for a given LRA.\n```java Journal getJournalForLRAid(String lraId, String journalType) throws Exception { Journal journal = journalRepository.findJournalByLraIdAndJournalType(lraId, journalType); if (journal == null) { journalRepository.save(new Journal(\"unknown\", -1, 0, lraId, AccountTransferDAO.getStatusString(ParticipantStatus.FailedToComplete))); throw new Exception(\"Journal entry does not exist for lraId:\" + lraId); } return journal; } ``` Create a method to save a journal entry.\n```java public void saveJournal(Journal journal) { journalRepository.save(journal); } ``` This completes the Data Access Object, now you can start implementing the actual business logic for the services.", @@ -359,14 +391,6 @@ var relearn_search_index = [ "title": "Create the Check Processing Microservice", "uri": "/microservices-datadriven/cloudbank/check/check-processing/index.html" }, - { - "breadcrumb": "CloudBank", - "content": "This is a new chapter.", - "description": "This is a new chapter.", - "tags": [], - "title": "Deploy with the CLI", - "uri": "/microservices-datadriven/cloudbank/deploy-cli/index.html" - }, { "breadcrumb": "CloudBank \u003e Explore the Backend", "content": "Oracle Backend for Spring Boot and Microservices includes APISIX API Gateway to manage which services are made available outside the Kubernetes cluster. APISIX allows you to manage many aspects of the services’ APIs including authentication, logging, which HTTP methods are accepted, what URL paths are exposed, and also includes capabilities like rewriting, filtering, traffic management and has a rich plugin ecosystem to enhance it with additional capabilities. You can manage the APISIX API Gateway using the APISIX Dashboard.\nAccess the APISIX Dashboard\nStart the tunnel using this command. You can run this in the background if you prefer.\n$ kubectl -n apisix port-forward svc/apisix-dashboard 8081:80Open a web browser to http://localhost:8081 to view the APISIX Dashboard web user interface. It will appear similar to the image below.\nIf prompted to login, login with username admin and password admin. Note that Oracle strongly recommends that you change the password, even though this interface is not accessible outside the cluster without a tunnel.\nOpen the routes page from the left hand side menu. You will see the routes that you defined in earlier modules:\nView details of a route\nClick on the Configure button next to the account route. The first page shows information about the route definition. Scroll down to the Request Basic Define section. Notice how you can set the host, port, paths, HTTP Methods and other information for the API.\nClick on the Next button to move to the Define API Backend Server page where you can set the routing/load balancing algorithm, retries, timeout and so on. On this page you will notice that the upstream service is defined using Service Discovery and the discovery type is Eureka. The Service Name specified here is the key used to look up the service in the Spring Eureka Service Registry. APISIX will route to any available instance of the service registered in Eureka.\nClick on the Next button to move to the Plugin Config page. The routes in the CloudBank sample do not use any of the plugins, however you can scroll through this page to get an idea of what plugins are available for your services.\nNote: You can find detailed information about the available plugins and how to configure them in the APISIX documentation in the Plugins section.", @@ -409,11 +433,11 @@ var relearn_search_index = [ }, { "breadcrumb": "CloudBank", - "content": "This is a new chapter.", - "description": "This is a new chapter.", + "content": "In this module, you will learn how to deploy the full CloudBank application to Oracle Backend for Spring Boot and Microservices using the CLI. If you prefer to use an IDE, skip this module and go to the next module instead.", + "description": "In this module, you will learn how to deploy the full CloudBank application to Oracle Backend for Spring Boot and Microservices using the CLI. If you prefer to use an IDE, skip this module and go to the next module instead.", "tags": [], - "title": "Deploy with an IDE", - "uri": "/microservices-datadriven/cloudbank/deploy-ide/index.html" + "title": "Deploy with the CLI", + "uri": "/microservices-datadriven/cloudbank/deploy-cli/index.html" }, { "breadcrumb": "CloudBank \u003e Explore the Backend", @@ -455,6 +479,14 @@ var relearn_search_index = [ "title": "Create the Withdrawal service", "uri": "/microservices-datadriven/cloudbank/saga/withdraw-service/index.html" }, + { + "breadcrumb": "CloudBank", + "content": "In this module, you will learn how to deploy the full CloudBank application to Oracle Backend for Spring Boot and Microservices using one of the IDE plugins - for Visual Studio Code or IntelliJ.", + "description": "In this module, you will learn how to deploy the full CloudBank application to Oracle Backend for Spring Boot and Microservices using one of the IDE plugins - for Visual Studio Code or IntelliJ.", + "tags": [], + "title": "Deploy with an IDE", + "uri": "/microservices-datadriven/cloudbank/deploy-ide/index.html" + }, { "breadcrumb": "CloudBank \u003e Explore the Backend", "content": "Grafana provides an easy way to access the metrics collected in the backend and to view them in dashboards. It can be used to monitor performance, as well as to identify and analyze problems and to create alerts.\nExplore the pre-installed Spring Boot Dashboard\nGet the password for the Grafana admin user using this command (your output will be different):\n$ kubectl -n grafana get secret grafana -o jsonpath='{.data.admin-password}' | base64 -d fusHDM7xdwJXyUM2bLmydmN1V6b3IyPVRUxDtqu7Start the tunnel using this command. You can run this in the background if you prefer.\n$ kubectl -n grafana port-forward svc/grafana 8080:80Open a web browser to http://localhost:8080/grafana/ to view the Grafana web user interface. It will appear similar to the image below. Log in with the username admin and the password you just got.\nAfter signing in you will get to the Grafana homepage.\nOn the left, click on Dashboards to set the list of pre-installed dashboards.\nclick on the link to Spring Boot 3.x Statistics to see Spring Boot information.\nThe Spring Boot Dashboard looks like the image below. Use the Instance selector at the top to choose which microservice you wish to view information for.\nFeel free to explore the other dashboards that are preinstalled.", @@ -463,14 +495,6 @@ var relearn_search_index = [ "title": "Explore Grafana", "uri": "/microservices-datadriven/cloudbank/backend/grafana/index.html" }, - { - "breadcrumb": "CloudBank", - "content": "This is a new chapter.", - "description": "This is a new chapter.", - "tags": [], - "title": "Explore the Backend", - "uri": "/microservices-datadriven/cloudbank/backend/index.html" - }, { "breadcrumb": "CloudBank \u003e Account Microservice", "content": "If you would like to learn more about endpoints and implement the remainder of the account-related endpoints, this task provides the necessary details.\nImplement Get Accounts for Customer ID endpoint\nAdd a new method to your AccountController.java class that responds to the HTTP GET method. This method should accept a customer ID as a path variable and return a list of accounts for that customer ID. If no accounts are found, return an empty body and set the HTTP Status Code to 204 (No Content).\nHere is the code to implement this endpoint:\nimport java.util.ArrayList; // ... @GetMapping(\"/account/getAccounts/{customerId}\") public ResponseEntity\u003cList\u003cAccount\u003e\u003e getAccountsByCustomerId(@PathVariable(\"customerId\") String customerId) { try { List\u003cAccount\u003e accountData = new ArrayList\u003cAccount\u003e(); accountData.addAll(accountRepository.findByAccountCustomerId(customerId)); if (accountData.isEmpty()) { return new ResponseEntity\u003c\u003e(HttpStatus.NO_CONTENT); } return new ResponseEntity\u003c\u003e(accountData, HttpStatus.OK); } catch (Exception e) { return new ResponseEntity\u003c\u003e(null, HttpStatus.INTERNAL_SERVER_ERROR); } }You will also need to update your AccountRepository.java class to add the extra find method you need for this endpoint.\nimport java.util.List; // ... public interface AccountRepository extends JpaRepository \u003cAccount, Long\u003e { List\u003cAccount\u003e findByAccountCustomerId(String customerId); } Test the /account/getAccounts/{customerId} endpoint\nRestart the application and test the new endpoint with this command (note that you created this account and customer ID earlier):\n$ curl -s http://localhost:8080/api/v1/account/getAccounts/bkzLp8cozi | jq . [ { \"accountId\": 2, \"accountName\": \"Mark's CCard\", \"accountType\": \"CC\", \"accountCustomerId\": \"bkzLp8cozi\", \"accountOpenedDate\": \"2023-02-26T02:04:56.000+00:00\", \"accountOtherDetails\": \"Mastercard account\", \"accountBalance\": 1000 } ] Implement a Delete Account API endpoint\nAdd a new method to your AccountController.java file that responds to the HTTP DELETE method and accepts an account ID as a path variable. You can use the @DeleteMapping annotation to respond to HTTP DELETE. This method should delete the account specified and return an empty body and HTTP Status Code 204 (No Content) which is generally accepted to mean the deletion was successful (some people also use 200 (OK) for this purpose).\nHere is the code to implement this endpoint:\nimport org.springframework.web.bind.annotation.DeleteMapping; // ... @DeleteMapping(\"/account/{accountId}\") public ResponseEntity\u003cHttpStatus\u003e deleteAccount(@PathVariable(\"accountId\") long accountId) { try { accountRepository.deleteById(accountId); return new ResponseEntity\u003c\u003e(HttpStatus.NO_CONTENT); } catch (Exception e) { return new ResponseEntity\u003c\u003e(HttpStatus.INTERNAL_SERVER_ERROR); } } Test the Delete /account/{accountId} endpoint\nRestart the application and test this new endpoint by creating and deleting an account. First create an account:\n$ curl -i -X POST \\ -H 'Content-Type: application/json' \\ -d '{\"accountName\": \"Bob\", \"accountType\": \"CH\", \"accountOtherDetail\": \"\", \"accountCustomerId\": \"bob808bob\"}' \\ http://localhost:8080/api/v1/account HTTP/1.1 201 Content-Type: application/json Transfer-Encoding: chunked Date: Wed, 01 Mar 2023 13:23:44 GMT {\"accountId\":42,\"accountName\":\"Bob\",\"accountType\":\"CH\",\"accountCustomerId\":\"bob808bob\",\"accountOpenedDate\":\"2023-03-01T18:23:44.000+00:00\",\"accountOtherDetails\":null,\"accountBalance\":0}Verify that account exists:\n$ curl -s http://localhost:8080/api/v1/account/getAccounts/bob808bob | jq . [ { \"accountId\": 42, \"accountName\": \"Bob\", \"accountType\": \"CH\", \"accountCustomerId\": \"bob808bob\", \"accountOpenedDate\": \"2023-03-01T18:23:44.000+00:00\", \"accountOtherDetails\": null, \"accountBalance\": 0 } ]Delete the account. Note that your account ID may be different, check the output from the previous command to get the right ID and replace 42 at the end of the URL with your ID:\n$ curl -i -X DELETE http://localhost:8080/api/v1/account/42 HTTP/1.1 204 Date: Wed, 01 Mar 2023 13:23:56 GMTVerify the account no longer exists:\n$ curl -s http://localhost:8080/api/v1/account/getAccounts/bob808bob | jq .That completes the account endpoints. Now it is time to deploy your service to the backend.", @@ -487,14 +511,6 @@ var relearn_search_index = [ "title": "Install SQLcl", "uri": "/microservices-datadriven/cloudbank/devenv/sqlcl/index.html" }, - { - "breadcrumb": "CloudBank", - "content": "This is a new chapter.", - "description": "This is a new chapter.", - "tags": [], - "title": "Cleanup", - "uri": "/microservices-datadriven/cloudbank/cleanup/index.html" - }, { "breadcrumb": "CloudBank \u003e Manage Sagas", "content": "Now, you will create another new Spring Boot microservice application and implement the Transfer Service. This service will initiate the LRA and act as the logical coordinator - it will call the deposit and withdraw services you just implemented to effect the transfer to process the Cloud Cash Payment.\nCreate a new Java Project for the transfer service. In the Explorer of VS Code open Java Project and click the plus sign to add a Java Project to your workspace.\nSelect Spring Boot Project.\nSelect Maven Project.\nSpecify 3.3.1 as the Spring Boot version.\nUse com.example as the Group Id.\nEnter transfer as the Artifact Id.\nUse JAR as the Packaging Type.\nSelect Java version 21.\nSearch for Spring Web and press Enter\nPress Enter to continue and create the Java Project\nSelect the root location for your project e.g. side by side with the checks, testrunner and accounts projects.\nWhen the project opens click Add to Workspace\nAdd MicroTX and Lombok to the pom.xml file Open the pom.xml file in the transfer project. Add the following to the pom.xml:\n```xml \u003cdependency\u003e \u003cgroupId\u003ecom.oracle.microtx.lra\u003c/groupId\u003e \u003cartifactId\u003emicrotx-lra-spring-boot-starter\u003c/artifactId\u003e \u003cversion\u003e23.4.2\u003c/version\u003e \u003c/dependency\u003e \u003cdependency\u003e \u003cgroupId\u003eorg.projectlombok\u003c/groupId\u003e \u003cartifactId\u003elombok\u003c/artifactId\u003e \u003c/dependency\u003e ``` Create the Spring Boot application configuration In the transfer project, rename the file called application.properties to application.yaml located in the src/main/resources. This will be the Spring Boot application configuration file. In this file you need to configure the endpoints for the LRA participants and coordinator.\n```yaml spring: application: name: transfer mvc: enforced-prefixes: - /actuator - /rest url-mappings: - \"/rest/*\" - \"/actuator/*\" - \"/error/*\" microtx: lra: coordinator-url: ${MP_LRA_COORDINATOR_URL} propagation-active: true headers-propagation-prefix: \"{x-b3-, oracle-tmm-, authorization, refresh-}\" account: deposit: url: http://account.application:8080/deposit withdraw: url: http://account.application:8080/withdraw transfer: cancel: url: http://transfer.application:8080/cancel process: url: http://transfer.application:8080/processcancel confirm: url: http://transfer.application:8080/confirm process: url: http://transfer.application:8080/processconfirm ``` Create the Transfer service You are now ready to implement the main logic for the Cloud Cash Payment/transfer LRA. You will implement this in a new Java file called TransferService.java in src/main/java/com/example/transfer. Here are the imports you will need for this class and the member variables. Note that this class has the @RestController and @RequestMapping annotations, as you saw previously in the Account project, to set up the URL context root for the service.\n```java package com.example.transfer; import java.net.URI; import com.oracle.microtx.springboot.lra.annotation.Compensate; import com.oracle.microtx.springboot.lra.annotation.Complete; import com.oracle.microtx.springboot.lra.annotation.LRA; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestHeader; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; import org.springframework.web.util.UriComponentsBuilder; import static com.oracle.microtx.springboot.lra.annotation.LRA.LRA_HTTP_CONTEXT_HEADER; @RestController @RequestMapping(\"/\") @Slf4j public class TransferService { public static final String TRANSFER_ID = \"TRANSFER_ID\"; @Value(\"${account.withdraw.url}\") URI withdrawUri; @Value(\"${account.deposit.url}\") URI depositUri; @Value(\"${transfer.cancel.url}\") URI transferCancelUri; @Value(\"${transfer.cancel.process.url}\") URI transferProcessCancelUri; @Value(\"${transfer.confirm.url}\") URI transferConfirmUri; @Value(\"${transfer.confirm.process.url}\") URI transferProcessConfirmUri; } ``` Create the transfer endpoint This is the main entry point for the LRA. When a client calls this method, a new LRA will be started. The @LRA annotation with the value property set to LRA.Type.REQUIRES_NEW instructs the interceptors/filters to contact Oracle Transaction Manager for Microservices to start a new LRA instance and obtain the LRA ID, which will be injected into the LRA_HTTP_CONTEXT_HEADER HTTP header. Note that the end property is set to false which means there will be other actions and participants before the LRA is completed.\nThis method will accept three parameters from the caller, in JSON format in the HTTP body: fromAccount is the account from which the funds are to be withdrawn, toAccount is the account into which the funds are to be deposited, and amount is the amount to transfer.\nIn the method body, you should first check if the lraId was set. If it is null, that indicates that there was some error trying to create the new LRA instance, and you should return an error response and stop.\nAfter that, you want to perform the withdrawal, check if it worked, and if so, perform the deposit, and then check if that worked, and if so “complete” the LRA. If there were any failures, compensate the LRA.\n```java /** * Transfer amount between two accounts. * @param fromAccount From an account * @param toAccount To an account * @param amount Amount to transfer * @param lraId LRA Id * @return TO-DO */ @PostMapping(\"/transfer\") @LRA(value = LRA.Type.REQUIRES_NEW, end = false) public ResponseEntity\u003cString\u003e transfer(@RequestParam(\"fromAccount\") long fromAccount, @RequestParam(\"toAccount\") long toAccount, @RequestParam(\"amount\") long amount, @RequestHeader(LRA_HTTP_CONTEXT_HEADER) String lraId) { if (lraId == null) { return new ResponseEntity\u003c\u003e(\"Failed to create LRA\", HttpStatus.INTERNAL_SERVER_ERROR); } log.info(\"Started new LRA/transfer Id: \" + lraId); boolean isCompensate = false; String returnString = \"\"; // perform the withdrawal returnString += withdraw(lraId, fromAccount, amount); log.info(returnString); if (returnString.contains(\"succeeded\")) { // if it worked, perform the deposit returnString += \" \" + deposit(lraId, toAccount, amount); log.info(returnString); if (returnString.contains(\"failed\")) { isCompensate = true; // deposit failed } } else { isCompensate = true; // withdraw failed } log.info(\"LRA/transfer action will be \" + (isCompensate ? \"cancel\" : \"confirm\")); // call complete or cancel based on outcome of previous actions RestTemplate restTemplate = new RestTemplate(); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.TEXT_PLAIN); headers.set(TRANSFER_ID, lraId); HttpEntity\u003cString\u003e request = new HttpEntity\u003cString\u003e(\"\", headers); ResponseEntity\u003cString\u003e response = restTemplate.postForEntity( (isCompensate ? transferCancelUri : transferConfirmUri).toString(), request, String.class); returnString += response.getBody(); // return status return ResponseEntity.ok(\"transfer status:\" + returnString); } ``` Create a method to perform the withdrawal This method should perform the withdrawal by calling the Withdraw service in the Account Spring Boot application. The lraId, accountId and amount need to be passed to the service, and you must set the LRA_HTTP_CONTEXT_HEADER to the LRA ID.\n```java private String withdraw(String lraId, long accountId, long amount) { log.info(\"withdraw accountId = \" + accountId + \", amount = \" + amount); log.info(\"withdraw lraId = \" + lraId); UriComponentsBuilder builder = UriComponentsBuilder.fromUri(withdrawUri) .queryParam(\"accountId\", accountId) .queryParam(\"amount\", amount); RestTemplate restTemplate = new RestTemplate(); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.TEXT_PLAIN); headers.set(LRA_HTTP_CONTEXT_HEADER, lraId.toString()); HttpEntity\u003cString\u003e request = new HttpEntity\u003cString\u003e(\"\", headers); ResponseEntity\u003cString\u003e response = restTemplate.postForEntity( builder.buildAndExpand().toUri(), request, String.class); return response.getBody(); } ``` Create a method to perform the deposit This method is similar the previous one, no new concepts are introduced here.\n```java private String deposit(String lraId, long accountId, long amount) { log.info(\"deposit accountId = \" + accountId + \", amount = \" + amount); log.info(\"deposit lraId = \" + lraId); UriComponentsBuilder builder = UriComponentsBuilder.fromUri(depositUri) .queryParam(\"accountId\", accountId) .queryParam(\"amount\", amount); RestTemplate restTemplate = new RestTemplate(); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.TEXT_PLAIN); headers.set(LRA_HTTP_CONTEXT_HEADER, lraId.toString()); HttpEntity\u003cString\u003e request = new HttpEntity\u003cString\u003e(\"\", headers); ResponseEntity\u003cString\u003e response = restTemplate.postForEntity( builder.buildAndExpand().toUri(), request, String.class); return response.getBody(); } ``` Create a method to process the confirm action for this participant This participant does not need to take any actions for the confirm action, so just return a successful response.\n```java @PostMapping(\"/processconfirm\") @LRA(value = LRA.Type.MANDATORY) public ResponseEntity\u003cString\u003e processconfirm(@RequestHeader(LRA_HTTP_CONTEXT_HEADER) String lraId) { log.info(\"Process confirm for transfer : \" + lraId); return ResponseEntity.ok(\"\"); } ``` Create a method to process the cancel action for this participant This participant does not need to take any actions for the cancel action, so just return a successful response.\n```java @PostMapping(\"/processcancel\") @LRA(value = LRA.Type.MANDATORY, cancelOn = HttpStatus.OK) public ResponseEntity\u003cString\u003e processcancel(@RequestHeader(LRA_HTTP_CONTEXT_HEADER) String lraId) { log.info(\"Process cancel for transfer : \" + lraId); return ResponseEntity.ok(\"\"); } ``` Create the confirm and cancel methods The logic demonstrated in these two methods would probably be in a client in a real-life LRA, but is included here for instructional purposes and convenience.\nThe transfer method makes a REST call to confirm (or cancel) at the end of its processing. The confirm or cancel method suspends the LRA (using the NOT_SUPPORTED value in the @LRA annotation). Then the confirm or cancel method will make a REST call to processconfirm or processcancel which import the LRA with their MANDATORY annotation and then implicitly end the LRA accordingly upon returning.\n```java /** * Confirm a transfer. * @param transferId Transfer Id * @return TO-DO */ @PostMapping(\"/confirm\") @Complete @LRA(value = LRA.Type.NOT_SUPPORTED) public ResponseEntity\u003cString\u003e confirm(@RequestHeader(TRANSFER_ID) String transferId) { log.info(\"Received confirm for transfer : \" + transferId); RestTemplate restTemplate = new RestTemplate(); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.TEXT_PLAIN); headers.set(LRA_HTTP_CONTEXT_HEADER, transferId); HttpEntity\u003cString\u003e request = new HttpEntity\u003cString\u003e(\"\", headers); ResponseEntity\u003cString\u003e response = restTemplate.postForEntity( transferProcessConfirmUri, request, String.class); return ResponseEntity.ok(response.getBody()); } /** * Cancel a transfer. * @param transferId Transfer Id * @return TO-DO */ @PostMapping(\"/cancel\") @Compensate @LRA(value = LRA.Type.NOT_SUPPORTED, cancelOn = HttpStatus.OK) public ResponseEntity\u003cString\u003e cancel(@RequestHeader(TRANSFER_ID) String transferId) { log.info(\"Received cancel for transfer : \" + transferId); RestTemplate restTemplate = new RestTemplate(); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.TEXT_PLAIN); headers.set(LRA_HTTP_CONTEXT_HEADER, transferId); HttpEntity\u003cString\u003e request = new HttpEntity\u003cString\u003e(\"\", headers); ResponseEntity\u003cString\u003e response = restTemplate.postForEntity( transferProcessCancelUri, request, String.class); return ResponseEntity.ok(response.getBody()); } ``` That completes the Transfer service and application.", @@ -527,6 +543,22 @@ var relearn_search_index = [ "title": "Explore Jaeger", "uri": "/microservices-datadriven/cloudbank/backend/jaeger/index.html" }, + { + "breadcrumb": "CloudBank", + "content": "This module will take you on a guided tour through the Oracle Backend for Spring Boot and Microservices platform. You will learn about the platform services and observability tools that are provided out-of-the-box.", + "description": "This module will take you on a guided tour through the Oracle Backend for Spring Boot and Microservices platform. You will learn about the platform services and observability tools that are provided out-of-the-box.", + "tags": [], + "title": "Explore the Backend", + "uri": "/microservices-datadriven/cloudbank/backend/index.html" + }, + { + "breadcrumb": "CloudBank", + "content": "This module demonstrates how to clean up any resources created when you provisioned an instance of Oracle Backend for Spring Boot and Microservices on Oracle Cloud Infrastructure (OCI) or on your local machine in containers.", + "description": "This module demonstrates how to clean up any resources created when you provisioned an instance of Oracle Backend for Spring Boot and Microservices on Oracle Cloud Infrastructure (OCI) or on your local machine in containers.", + "tags": [], + "title": "Cleanup", + "uri": "/microservices-datadriven/cloudbank/cleanup/index.html" + }, { "breadcrumb": "CloudBank \u003e Manage Sagas", "content": "The services are now completed, and you are ready to deploy them to the Oracle Backend for Spring Boot and Microservices.\nNote: You already created the Kubernetes secrets necessary for the account service to access the Oracle Autonomous Database in a previous module, and the transfer service does not need access to the database. You also created the journal table that is needed by the update account application in the previous module.\nBuild the Account and Transfer applications into JAR files To build a JAR file from the Account application, issue this command in the account directory. Then issue the same command from the transfer directory to build the Transfer application into a JAR file too.\n```shell $ mvn clean package -DskipTests ``` You will now have a JAR file for each application, as can be seen with this command (the command needs to be executed in the parent directory for the Account and Transfer applications):\n```shell $ find . -name \\*SNAPSHOT.jar ./testrunner/target/testrunner-0.0.1-SNAPSHOT.jar ./checks/target/checks-0.0.1-SNAPSHOT.jar ./transfer/target/transfer-0.0.1-SNAPSHOT.jar ./accounts/target/accounts-0.0.1-SNAPSHOT.jar ``` Deploy the Account and Transfer applications You will now deploy your updated account application and new transfer application to the Oracle Backend for Spring Boot and Microservices using the CLI. You will deploy into the application namespace, and the service names will be account and transfer respectively.\nThe Oracle Backend for Spring Boot and Microservices admin service is not exposed outside of the Kubernetes cluster by default. Oracle recommends using a kubectl port forwarding tunnel to establish a secure connection to the admin service.\nStart a tunnel using this command:\n```shell $ kubectl -n obaas-admin port-forward svc/obaas-admin 8080:8080 ``` Start the Oracle Backend for Spring Boot and Microservices CLI (oractl) in the parent directory using this command:\n```shell $ oractl _ _ __ _ ___ / \\ |_) _. _. (_ / | | \\_/ |_) (_| (_| __) \\_ |_ _|_ ======================================================================================== Application Name: Oracle Backend Platform :: Command Line Interface Application Version: (1.2.0) :: Spring Boot (v3.3.0) :: Ask for help: - Slack: https://oracledevs.slack.com/archives/C03ALDSV272 - email: obaas_ww@oracle.com oractl:\u003e ``` Obtain the obaas-admin password by executing this command:\n```shell kubectl get secret -n azn-server oractl-passwords -o jsonpath='{.data.admin}' | base64 -d ``` Connect to the Oracle Backend for Spring Boot and Microservices admin service using this command. Use obaas-admin as the username and the password you obtained in the previous step.\n```shell oractl\u003e connect username: obaas-admin password: ************** Credentials successfully authenticated! obaas-admin -\u003e welcome to OBaaS CLI. oractl:\u003e ``` Run this command to deploy your account service, make sure you provide the correct path to your JAR files.\n```shell oractl:\u003e deploy --app-name application --service-name account --artifact-path /path/to/accounts-0.0.1-SNAPSHOT.jar --image-version 0.0.1 --liquibase-db admin uploading: account/target/accounts-0.0.1-SNAPSHOT.jar building and pushing image... creating deployment and service... successfully deployed oractl:\u003e ``` Run this command to deploy the transfer service, make sure you provide the correct path to your JAR files.\n```shell oractl:\u003e deploy --app-name application --service-name transfer --artifact-path /path/to/transfer-0.0.1-SNAPSHOT.jar --image-version 0.0.1 uploading: transfer/target/transfer-0.0.1-SNAPSHOT.jar building and pushing image... creating deployment and service... successfully deployed oractl:\u003e ``` Your applications are now deployed in the backend.", @@ -545,8 +577,8 @@ var relearn_search_index = [ }, { "breadcrumb": "CloudBank \u003e Developer Environment", - "content": "If you plan to do the optional part of Lab. 5, you need to install in VS Code the Oracle Backend for Spring Boot and Microservices VS Code plugin. It is an extension to browse and deploy applications on the Oracle Backend for Spring Boot and Microservices platform. This plugin allows to inspect the content of an Oracle Backend for Spring Boot and Microservices deployment, in terms of applications, services and related configurations.\nDownload the plug-in from here.\nOn the VS Code right menu bar, click on Extensions item:\nFrom the up-right corner menu, choose Install from VSIX…:\nand upload plug-in binaries previously downloaded.\nRe-start VS Code to make fully operative the plugin, in command palette execute a window reload:\nIf you don’t see the plugin in the left bar, with the Oracle logo, as shown here:\nclick on Additional Views menu to select the Oracle Backend for Spring Boot and Microservices.", - "description": "If you plan to do the optional part of Lab. 5, you need to install in VS Code the Oracle Backend for Spring Boot and Microservices VS Code plugin. It is an extension to browse and deploy applications on the Oracle Backend for Spring Boot and Microservices platform. This plugin allows to inspect the content of an Oracle Backend for Spring Boot and Microservices deployment, in terms of applications, services and related configurations.", + "content": "Some modules contain optional parts which show you how to do deployments and configuration with the IDE plugins instead of using the CLI. If you plan to do those optional parts, you need to install the VS Code extension forOracle Backend for Spring Boot and Microservices. It is an extension to browse and deploy applications on the Oracle Backend for Spring Boot and Microservices platform. This plugin allows to inspect the content of an Oracle Backend for Spring Boot and Microservices deployment, in terms of applications, services and related configurations.\nDownload the plug-in from here.\nOn the VS Code right menu bar, click on Extensions item:\nFrom the up-right corner menu, choose Install from VSIX…:\nand upload plug-in binaries previously downloaded.\nRe-start VS Code to make fully operative the plugin, in command palette execute a window reload:\nIf you don’t see the plugin in the left bar, with the Oracle logo, as shown here:\nclick on Additional Views menu to select the Oracle Backend for Spring Boot and Microservices.", + "description": "Some modules contain optional parts which show you how to do deployments and configuration with the IDE plugins instead of using the CLI. If you plan to do those optional parts, you need to install the VS Code extension forOracle Backend for Spring Boot and Microservices. It is an extension to browse and deploy applications on the Oracle Backend for Spring Boot and Microservices platform. This plugin allows to inspect the content of an Oracle Backend for Spring Boot and Microservices deployment, in terms of applications, services and related configurations.", "tags": [], "title": "Install IDE Plugin", "uri": "/microservices-datadriven/cloudbank/devenv/ide-plugin/index.html" @@ -569,8 +601,8 @@ var relearn_search_index = [ }, { "breadcrumb": "", - "content": "Welcome to CloudBank - an on-demand, self-paced learning resource you can use to learn about developing microservices with Spring Boot and deploying, running and managing them with Oracle Backend for Spring Boot and Microservices.\nYou can follow through from beginning to end, or you can start at any module that you are interested in.\nWhat you will need To complete the modules you will need docker-compose to run the backend and Oracle Database containers - you can use Docker Desktop, Rancher Desktop, Podman Desktop or similar.\nYou will need a Java SDK and either Maven or Gradle to build your applicaitons. An IDE is not strictly required, but you will have a better overall experience if you use one. We recommend Visual Studio Code or IntelliJ.\nModules CloudBank contains the following modules:\nModule 1: Provision the Backend This module guides you through provisioning an instance of the backend using Oracle Cloud Infrastructure (OCI) or on your local machine using Docker Compose. Module 2: Preparing your Development Environment\nThis module guides you through setting up your development environment including and IDE and a toolchain to build and test your applications. Module 3: Build the Account Microservice\nThis module walks you through building your very first microservice using Spring Boot. It assumes no prior knowledge of Spring Boot, so its a great place to start if you have not used Spring Boot before. This module demonstrates how to build a service with a synchronous API implmented as REST endpoints using Spring Web MVC, and how to store data in Oracle Database using Spring Data JPA. Module 4: Build the Check Processing Microservices\nIn this module, you will build microservices that use asynchronous messaging to communicate using Spring JMS and Oracle Transactional Event Queues. It introduces service discovery using Eureka Service Registry (part of Spring Cloud Netflix) and Spring Cloud OpenFeign. Module 5: Manage Saga Transactions across Microservices\nThis module introduces the Saga pattern, a very important pattern that helps us manage data consistency across microservices. We will explore the Long Running Action specification, one implementation of the Saga pattern, and then build a Transfer microservice that will manage funds transfers using a saga. Module 6: Deploying the full CloudBank Application using the CLI\nIn this module, you will learn how to deploy the full CloudBank application to Oracle Backend for Spring Boot and Microservices using the CLI. If you prefer to use an IDE, skip this module and go to module 6 instead. Module 7: Deploying the full CloudBank Application using the IDE plugins\nIn this module, you will learn how to deploy the full CloudBank application to Oracle Backend for Spring Boot and Microservices using one of the IDE plugins - for Visual Studio Code or IntelliJ. Module 8: Explore the Backend Platform\nThis module will take you on a guided tour through the Oracle Backend for Spring Boot and Microservices platform. You will learn about the platform services and observability tools that are provided out-of-the=box Module 9: Cleanup This module demonstrates how to clean up any resources created when you provisioned an instance of Oracle Backend for Spring Boot and Microservices on Oracle Cloud Infrastructure (OCI) or on your local machine using Docker Compose. ", - "description": "Welcome to CloudBank - an on-demand, self-paced learning resource you can use to learn about developing microservices with Spring Boot and deploying, running and managing them with Oracle Backend for Spring Boot and Microservices.\nYou can follow through from beginning to end, or you can start at any module that you are interested in.\nWhat you will need To complete the modules you will need docker-compose to run the backend and Oracle Database containers - you can use Docker Desktop, Rancher Desktop, Podman Desktop or similar.", + "content": "Welcome to CloudBank - an on-demand, self-paced learning resource you can use to learn about developing microservices with Spring Boot and deploying, running and managing them with Oracle Backend for Spring Boot and Microservices.\nYou can follow through from beginning to end, or you can start at any module that you are interested in.\nWhat you will need To complete the modules you will somewhere to run Oracle Backend for Spring Boot and Microservices. The instructions in the Module 1 provide three alternatives:\nLocally in a container - you will need a container platform like Docker Desktop, Rancher Desktop, Podman Desktop or similar. This option is recommended only if you have at least 64GB of RAM. With less memory this option will probably be too slow. In a compute instance in an Oracle Cloud Free Tier account. You can sign up for an Oracle Cloud Free Tier account here. This account will include enough free credits to run CloudBank. In a commercial Oracle Cloud tenancy. If you have a commercial tenancy with sufficient capacity and privileges, you can run the full production-sized installation. This can be installed from the OCI Marketplace using the instructions in Module 1. Check the instructions for a more detailed list of requirements. Regardless of which option you choose, the remainder of the modules will be virtually identical.\nYou will need a Java SDK and either Maven or Gradle to build your applicaitons. An IDE is not strictly required, but you will have a better overall experience if you use one. We recommend Visual Studio Code or IntelliJ.\nModules CloudBank contains the following modules:\nModule 1: Provision the Backend This module guides you through provisioning an instance of the backend using Oracle Cloud Infrastructure (OCI) or on your local machine using Docker Compose. Module 2: Preparing your Development Environment\nThis module guides you through setting up your development environment including and IDE and a toolchain to build and test your applications. Module 3: Build the Account Microservice\nThis module walks you through building your very first microservice using Spring Boot. It assumes no prior knowledge of Spring Boot, so its a great place to start if you have not used Spring Boot before. This module demonstrates how to build a service with a synchronous API implemented as REST endpoints using Spring Web MVC, and how to store data in Oracle Database using Spring Data JPA. Module 4: Build the Check Processing Microservices\nIn this module, you will build microservices that use asynchronous messaging to communicate using Spring JMS and Oracle Transactional Event Queues. It introduces service discovery using Eureka Service Registry (part of Spring Cloud Netflix) and Spring Cloud OpenFeign. Module 5: Manage Saga Transactions across Microservices\nThis module introduces the Saga pattern, a very important pattern that helps us manage data consistency across microservices. We will explore the Long Running Action specification, one implementation of the Saga pattern, and then build a Transfer microservice that will manage funds transfers using a saga. Module 6: Building the CloudBank AI Assistant using Spring AI This modules introduces Spring AI and explores how it can be used to build a CloudBank AI Assistant (chatbot) that will allow users to interact with CloudBank using a chat-based interface. In this module, you will learn about Retrieval Augmented Generation, Vector Database and AI Agents. Module 7: Deploying the full CloudBank Application using the CLI\nIn this module, you will learn how to deploy the full CloudBank application to Oracle Backend for Spring Boot and Microservices using the CLI. If you prefer to use an IDE, skip this module and go to module 6 instead. Module 8: Deploying the full CloudBank Application using the IDE plugins\nIn this module, you will learn how to deploy the full CloudBank application to Oracle Backend for Spring Boot and Microservices using one of the IDE plugins - for Visual Studio Code or IntelliJ. Module 9: Explore the Backend Platform\nThis module will take you on a guided tour through the Oracle Backend for Spring Boot and Microservices platform. You will learn about the platform services and observability tools that are provided out-of-the-box. Module 10: Cleanup This module demonstrates how to clean up any resources created when you provisioned an instance of Oracle Backend for Spring Boot and Microservices on Oracle Cloud Infrastructure (OCI) or on your local machine using Docker Compose. ", + "description": "Welcome to CloudBank - an on-demand, self-paced learning resource you can use to learn about developing microservices with Spring Boot and deploying, running and managing them with Oracle Backend for Spring Boot and Microservices.\nYou can follow through from beginning to end, or you can start at any module that you are interested in.\nWhat you will need To complete the modules you will somewhere to run Oracle Backend for Spring Boot and Microservices.", "tags": [], "title": "CloudBank", "uri": "/microservices-datadriven/cloudbank/index.html" diff --git a/cloudbank/index.xml b/cloudbank/index.xml index 0d1649106..722561d59 100644 --- a/cloudbank/index.xml +++ b/cloudbank/index.xml @@ -3,7 +3,7 @@ CloudBank https://oracle.github.io/microservices-datadriven/cloudbank/index.html - Welcome to CloudBank - an on-demand, self-paced learning resource you can use to learn about developing microservices with Spring Boot and deploying, running and managing them with Oracle Backend for Spring Boot and Microservices. You can follow through from beginning to end, or you can start at any module that you are interested in. What you will need To complete the modules you will need docker-compose to run the backend and Oracle Database containers - you can use Docker Desktop, Rancher Desktop, Podman Desktop or similar. + Welcome to CloudBank - an on-demand, self-paced learning resource you can use to learn about developing microservices with Spring Boot and deploying, running and managing them with Oracle Backend for Spring Boot and Microservices. You can follow through from beginning to end, or you can start at any module that you are interested in. What you will need To complete the modules you will somewhere to run Oracle Backend for Spring Boot and Microservices. Hugo en-us @@ -12,63 +12,70 @@ https://oracle.github.io/microservices-datadriven/cloudbank/provision/index.html Mon, 01 Jan 0001 00:00:00 +0000 https://oracle.github.io/microservices-datadriven/cloudbank/provision/index.html - This is a new chapter. + This module guides you through provisioning an Oracle Backend for Spring Boot environment either on your local machine, in the Oracle Cloud Free Tier, or in a commercial Oracle Cloud Tenancy. Developer Environment https://oracle.github.io/microservices-datadriven/cloudbank/devenv/index.html Mon, 01 Jan 0001 00:00:00 +0000 https://oracle.github.io/microservices-datadriven/cloudbank/devenv/index.html - xyz + This module guides you through setting up the tools required for a Spring Boot developer. Account Microservice https://oracle.github.io/microservices-datadriven/cloudbank/account/index.html Mon, 01 Jan 0001 00:00:00 +0000 https://oracle.github.io/microservices-datadriven/cloudbank/account/index.html - This is a new chapter. + This module walks you through building your very first microservice using Spring Boot. It assumes no prior knowledge of Spring Boot, so its a great place to start if you have not used Spring Boot before. This module demonstrates how to build a service with a synchronous API implemented as REST endpoints using Spring Web MVC, and how to store data in Oracle Database using Spring Data JPA. Check Processing https://oracle.github.io/microservices-datadriven/cloudbank/check/index.html Mon, 01 Jan 0001 00:00:00 +0000 https://oracle.github.io/microservices-datadriven/cloudbank/check/index.html - This is a new chapter. + In this module, you will build microservices that use asynchronous messaging to communicate using Spring JMS and Oracle Transactional Event Queues. It introduces service discovery using Eureka Service Registry (part of Spring Cloud Netflix) and Spring Cloud OpenFeign. Manage Sagas https://oracle.github.io/microservices-datadriven/cloudbank/saga/index.html Mon, 01 Jan 0001 00:00:00 +0000 https://oracle.github.io/microservices-datadriven/cloudbank/saga/index.html - This is a new chapter. + This module introduces the Saga pattern, a very important pattern that helps us manage data consistency across microservices. We will explore the Long Running Action specification, one implementation of the Saga pattern, and then build a Transfer microservice that will manage funds transfers using a saga. + + + CloudBank AI Assistant + https://oracle.github.io/microservices-datadriven/cloudbank/springai/index.html + Mon, 01 Jan 0001 00:00:00 +0000 + https://oracle.github.io/microservices-datadriven/cloudbank/springai/index.html + This modules introduces Spring AI and explores how it can be used to build a CloudBank AI Assistant (chatbot) that will allow users to interact with CloudBank using a chat-based interface. In this module, you will learn about Retrieval Augmented Generation, Vector Database and AI Agents. Deploy with the CLI https://oracle.github.io/microservices-datadriven/cloudbank/deploy-cli/index.html Mon, 01 Jan 0001 00:00:00 +0000 https://oracle.github.io/microservices-datadriven/cloudbank/deploy-cli/index.html - This is a new chapter. + In this module, you will learn how to deploy the full CloudBank application to Oracle Backend for Spring Boot and Microservices using the CLI. If you prefer to use an IDE, skip this module and go to the next module instead. Deploy with an IDE https://oracle.github.io/microservices-datadriven/cloudbank/deploy-ide/index.html Mon, 01 Jan 0001 00:00:00 +0000 https://oracle.github.io/microservices-datadriven/cloudbank/deploy-ide/index.html - This is a new chapter. + In this module, you will learn how to deploy the full CloudBank application to Oracle Backend for Spring Boot and Microservices using one of the IDE plugins - for Visual Studio Code or IntelliJ. Explore the Backend https://oracle.github.io/microservices-datadriven/cloudbank/backend/index.html Mon, 01 Jan 0001 00:00:00 +0000 https://oracle.github.io/microservices-datadriven/cloudbank/backend/index.html - This is a new chapter. + This module will take you on a guided tour through the Oracle Backend for Spring Boot and Microservices platform. You will learn about the platform services and observability tools that are provided out-of-the-box. Cleanup https://oracle.github.io/microservices-datadriven/cloudbank/cleanup/index.html Mon, 01 Jan 0001 00:00:00 +0000 https://oracle.github.io/microservices-datadriven/cloudbank/cleanup/index.html - This is a new chapter. + This module demonstrates how to clean up any resources created when you provisioned an instance of Oracle Backend for Spring Boot and Microservices on Oracle Cloud Infrastructure (OCI) or on your local machine in containers. \ No newline at end of file diff --git a/cloudbank/more/credits/index.html b/cloudbank/more/credits/index.html index c1d036ca5..a2d918e0b 100644 --- a/cloudbank/more/credits/index.html +++ b/cloudbank/more/credits/index.html @@ -3,7 +3,7 @@ - + @@ -25,25 +25,26 @@ Credits :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -262,7 +267,7 @@

Contributors

@@ -288,8 +293,8 @@

Contributors

- - - + + + diff --git a/cloudbank/provision/images/install-free-tier-1.png b/cloudbank/provision/images/install-free-tier-1.png new file mode 100644 index 000000000..5aa41d4c6 Binary files /dev/null and b/cloudbank/provision/images/install-free-tier-1.png differ diff --git a/cloudbank/provision/images/install-free-tier-2.png b/cloudbank/provision/images/install-free-tier-2.png new file mode 100644 index 000000000..c41d8d611 Binary files /dev/null and b/cloudbank/provision/images/install-free-tier-2.png differ diff --git a/cloudbank/provision/images/install-free-tier-3.png b/cloudbank/provision/images/install-free-tier-3.png new file mode 100644 index 000000000..a33247e15 Binary files /dev/null and b/cloudbank/provision/images/install-free-tier-3.png differ diff --git a/cloudbank/provision/images/install-free-tier-4.png b/cloudbank/provision/images/install-free-tier-4.png new file mode 100644 index 000000000..9bdbf6321 Binary files /dev/null and b/cloudbank/provision/images/install-free-tier-4.png differ diff --git a/cloudbank/provision/images/install-free-tier-5.png b/cloudbank/provision/images/install-free-tier-5.png new file mode 100644 index 000000000..c005ab025 Binary files /dev/null and b/cloudbank/provision/images/install-free-tier-5.png differ diff --git a/cloudbank/provision/images/install-free-tier-6.png b/cloudbank/provision/images/install-free-tier-6.png new file mode 100644 index 000000000..ce036f358 Binary files /dev/null and b/cloudbank/provision/images/install-free-tier-6.png differ diff --git a/cloudbank/provision/images/install-free-tier-7.png b/cloudbank/provision/images/install-free-tier-7.png new file mode 100644 index 000000000..3fd0f458d Binary files /dev/null and b/cloudbank/provision/images/install-free-tier-7.png differ diff --git a/cloudbank/provision/images/install-free-tier-8.png b/cloudbank/provision/images/install-free-tier-8.png new file mode 100644 index 000000000..8acce1e39 Binary files /dev/null and b/cloudbank/provision/images/install-free-tier-8.png differ diff --git a/cloudbank/provision/index.html b/cloudbank/provision/index.html index cbd9732e9..c6cc88ee2 100644 --- a/cloudbank/provision/index.html +++ b/cloudbank/provision/index.html @@ -3,43 +3,44 @@ - + - + - + - + - - + + Provision an Instance :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -245,7 +252,7 @@

Provision an Instance

@@ -271,8 +278,8 @@

Provision an Instance

- - - + + + diff --git a/cloudbank/provision/index.xml b/cloudbank/provision/index.xml index 2fe02146b..78a6dc466 100644 --- a/cloudbank/provision/index.xml +++ b/cloudbank/provision/index.xml @@ -3,7 +3,7 @@ Provision an Instance :: CloudBank https://oracle.github.io/microservices-datadriven/cloudbank/provision/index.html - This is a new chapter. + This module guides you through provisioning an Oracle Backend for Spring Boot environment either on your local machine, in the Oracle Cloud Free Tier, or in a commercial Oracle Cloud Tenancy. Hugo en-us @@ -15,18 +15,25 @@ This module walks you through the steps to provision an instance of the Oracle Backend for Spring Boot and Microservices. Estimated Time: 30 minutes About Oracle Backend for Spring Boot and Microservices Oracle Backend for Spring Boot and Microservices allows developers to build microservices in Spring Boot and provision a backend as a service with the Oracle Database and other infrastructure components that operate on multiple clouds. This service vastly simplifies the task of building, testing, and operating microservices platforms for reliable, secure, and scalable enterprise applications. - Install on OCI - https://oracle.github.io/microservices-datadriven/cloudbank/provision/install/index.html + Install locally + https://oracle.github.io/microservices-datadriven/cloudbank/provision/install-local/index.html Mon, 01 Jan 0001 00:00:00 +0000 - https://oracle.github.io/microservices-datadriven/cloudbank/provision/install/index.html - The Oracle Backend for Spring Boot and Microservices can be installed from OCI Marketplace. Note: Oracle Backend for Spring Boot and Microservices can also be installed on-premises or in other clouds. Access the Oracle Cloud Infrastructure Marketplace listing Open the OCI Marketplace listing, as shown in the image below: Click on the Get App button. Log into your Oracle Cloud Infrastructure account You will be taken to a Sign-In page. Choose they type of account you have and click on the Sign In button. + https://oracle.github.io/microservices-datadriven/cloudbank/provision/install-local/index.html + This option allows you to run Oracle Backend for Spring Boot and Microservices in a containerized environment on your local machine. This option is recommended if you do have enough free capacity on your local machine to run the environment, a minimum of 64GB RAM and 80GB free disk are recommneded. This option provides an environment with adequeate resources for development and testing, but is not suitable for a production-sized deployment or performance testing. - Verify Installation - https://oracle.github.io/microservices-datadriven/cloudbank/provision/verify/index.html + Install in OCI Free Tier + https://oracle.github.io/microservices-datadriven/cloudbank/provision/install-free-trial/index.html Mon, 01 Jan 0001 00:00:00 +0000 - https://oracle.github.io/microservices-datadriven/cloudbank/provision/verify/index.html - Check the logs for errors Scroll down to the bottom of the log to see the outcome. If there was an error during installation, details will be included at the end of the log. The most common errors are due to insufficient quota for some resource. If you get an error about insufficient quota, you may need to clean up unused resources or request a quota increase for the affected resource. + https://oracle.github.io/microservices-datadriven/cloudbank/provision/install-free-trial/index.html + This option allows you to run Oracle Backend for Spring Boot and Microservices in a containerized environment inside a single OCI Compute Instance. This option is good if you do not have enough free capacity on your local machine to run the environment, and if you do not have or want to use the resources required for a full production-sized deployment. This option provides an environment with adequate resources for development and testing, but minimizes the resource usage and costs. + + + Install from OCI Marketplace + https://oracle.github.io/microservices-datadriven/cloudbank/provision/install-mp/index.html + Mon, 01 Jan 0001 00:00:00 +0000 + https://oracle.github.io/microservices-datadriven/cloudbank/provision/install-mp/index.html + The Oracle Backend for Spring Boot and Microservices can be installed from OCI Marketplace. Note: You only need to choose one of the three deployment options - local, OCI Free Tier or OCI Marketplace. Access the Oracle Cloud Infrastructure Marketplace listing Open the OCI Marketplace listing, as shown in the image below: Click on the Get App button. Log into your Oracle Cloud Infrastructure account You will be taken to a Sign-In page. \ No newline at end of file diff --git a/cloudbank/provision/install-free-trial/index.html b/cloudbank/provision/install-free-trial/index.html new file mode 100644 index 000000000..31b0d60eb --- /dev/null +++ b/cloudbank/provision/install-free-trial/index.html @@ -0,0 +1,436 @@ + + + + + + + + + + + + + + + + + + + + + + + Install in OCI Free Tier :: CloudBank + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+
+
+ +

Install in OCI Free Tier

+ +

This option allows you to run Oracle Backend for Spring Boot and Microservices in a containerized environment inside a single OCI Compute Instance. This option is good if you do not have enough free capacity on your local machine to run the environment, and if you do not have or want to use the resources required for a full production-sized deployment. This option provides an environment with adequate resources for development and testing, but minimizes the resource usage and costs.

+
+

Note: You only need to choose one of the three deployment options - local, OCI Free Tier or OCI Marketplace.

+
+
    +
  1. +

    Get an Oracle Cloud Free Tier account

    +

    If you do not already have one, you can obtain an Oracle Cloud Free Tier account as follows:

    +
      +
    • Open a browser and navigate to the Oracle Cloud Free Tier signup page.
    • +
    • Complete the requested details and click on the Verify email button.
    • +
    • You will receive an email from “Oracle Cloud” with instructions on how to verify your email address.
    • +
    • On the Account Information page, enter the requested details.
    • +
    • When completed, click on the Start my free trial button.
    • +
    • You will need to wait a few minutes while your account is created and set up.
    • +
    • When the set up is completed, you will see the login page. You will also receive an email confirmation.
    • +
    • Log in to your new account. You may be asked to configured secure verification.
    • +
    +
  2. +
  3. +

    Copy the custom compute image

    +
      +
    • +

      Choose a compartment in the drop down box on the left hand side of the OCI Console.

      +
      +

      Note: If you use or plan to use this OCI Cloud account for other purposes as well, Oracle recommends creating compartments to simplify management. You can create a compartment by navigating to the Compartments page in the Identity section of OCI Console. You can use the root compartment if you wish, but it is not generally recommended.

      +
      +
    • +
    • +

      Navigate to the Custom Instances page by opening the main menu using the “hamburger” icon ( ) in the top left corner of the console and searching for “image”:

      +

      Custom Instance import +Custom Instance import

      +
    • +
    • +

      Click on the Import image button.

      +
    • +
    • +

      Choose the option to Import from an Object Storage URL and provide the following URL in the Object Storage URL field:

      +
      https://objectstorage.us-ashburn-1.oraclecloud.com/p/oSwRpU_9v5NGzkJ-P0qKzT1ZN-Y9lJZu1aXO_2N-rkGdJs-hKJt10bRk9TxsCceF/n/maacloud/b/cloudbank-public/o/obaas-1.3.0-2
    • +
    • +

      (Important) Under Image type choose the OCI option.

      +
    • +
    • +

      Click on the Import image button to start the import.

      +

      Custom Instance import +Custom Instance import

      +
      +

      Note: that it might take approximately 10 to 15 minutes to complete the import. You can see the progress on the Custom image details page that will be displayed.

      +
      +
    • +
    +
  4. +
  5. +

    Create a compute instance

    +
      +
    • +

      Choose a compartment in the drop down box on the left hand side of the OCI Console.

      +
      +

      Note: If you use or plan to use this OCI Cloud account for other purposes as well, Oracle recommends creating compartments to simplify management. You can create a compartment by navigating to the Compartments page in the Identity section of OCI Console. You can use the root compartment if you wish, but it is not generally recommended.

      +
      +
    • +
    • +

      Navigate to the Compute Instances page by clicking on the link on the home page of the OCI Console or opening the main menu using the “hamburger” icon ( ) in the top left corner of the console and searching for +“instance”:

      +

      Instances +Instances

      +
    • +
    • +

      Create a Compute Instance by clicking on the Create instance button.

      +
    • +
    • +

      Enter a name for the instance, for example obaas-instance.

      +
    • +
    • +

      Scroll down to the Image and shape section and click on the Change Image button to edit the details.

      +
    • +
    • +

      In the image source, choose the option for My ../images and choose the image the you imported in the previous step.

      +
      +

      Note: The image will not show up until the import is completed.

      +
      +

      Custom image selected +Custom image selected

      +

      Click on the Select image button to confirm your choice.

      +
    • +
    • +

      Click on the Change shape button to choose the shape of your instance. Oracle recommends 2 OCPUs and 32 GB of memory to run this CloudBank environment.

      +

      Shape selected +Shape selected

      +

      Click on the Select shape button to confirm your choice.

      +
    • +
    • +

      Leave the default values in the Primary VNIC Section. By doing so a virtual network and subnets will be created for you.

      +
    • +
    • +

      In the SSH Keys section, make sure you provide SSH keys so you can log into your instance. You may provide an existing public key if you have one, or generate new keys.

      +
    • +
    • +

      Click on the Create button to create the instance. The instance and the virtual network will be started, this will take a few moments.

      +
    • +
    +
  6. +
  7. +

    Start Oracle Backend for Spring Boot and Microservices

    +
      +
    • +

      Note the Public IP Address of your newly created instance in the Instance access section of the Instance details page +that is displayed.

      +

      Shape selected +Shape selected

      +
    • +
    • +

      Log into the compute instance using SSH, for example:

      +
      ssh -i <path and filename of private key> -L 1443:localhost:443 ubuntu@207.211.186.88 

      You will need to use the IP address of your instance in this command. Note that the example command also creates a port forward so that you will be able to access various Web UI’s from your local machine.

      +
    • +
    • +

      You will be asked to confirm the authenticity of your SSH keys, enter yes.

      +
    • +
    • +

      The environment will start automatically, including a Kubernetes cluster in a container (using k3s), Oracle Backend for Spring Boot and Microservices and an Oracle Database instance inside that cluster. It will take approximately six minutes for all of the containers to reach ready/running state. You can watch the progress using this command:

      +
      watch kubectl get pod -A
      +

      Note: Should you require access to it, the kubeconfig file for your cluster is located at this location:

      +
      +
      /home/ubuntu/obaas/k3s_data/kubeconfig/kubeconfig.yaml

      When the environment is fully started, the output will appear similar to this:

      +

      Completed startup +Completed startup

      +
    • +
    +
  8. +
  9. +

    Verify access to web user interfaces

    +
      +
    • +

      On your local machine, open a browser and navigate to the Spring Operations Center.

      +
    • +
    • +

      Log in using the pre-defined user obaas-admin and password Welcome-12345.

      +
    • +
    +
    +

    Note: Since this is a development environment with no DNS name, it is configured with self-signed certificates. Your browser will warn you about the connection security.

    +
    +
      +
    • +

      If you are using Chrome, click on the Advanced link and then the Proceed to localhost (unsafe) link. If you are using a different browser, perform the equivalent actions.

      +
    • +
    • +

      The Spring Operations Center main dashboard will appear similar to this:

      +

      Spring Operations Center +Spring Operations Center

      +
    • +
    +
  10. +
+ +
+
+
+
+
+
+ + + + + + diff --git a/cloudbank/provision/install-local/index.html b/cloudbank/provision/install-local/index.html new file mode 100644 index 000000000..64d322d71 --- /dev/null +++ b/cloudbank/provision/install-local/index.html @@ -0,0 +1,356 @@ + + + + + + + + + + + + + + + + + + + + + + + Install locally :: CloudBank + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+
+
+ +

Install locally

+ +

This option allows you to run Oracle Backend for Spring Boot and Microservices in a containerized +environment on your local machine. This option is recommended if you do have enough +free capacity on your local machine to run the environment, a minimum of 64GB RAM and 80GB free disk are recommneded. +This option provides an environment with adequeate resources for development and testing, but +is not suitable for a production-sized deployment or performance testing.

+
+

Note: You only need to choose one of the three deployment options - local, OCI Free Tier or OCI Marketplace.

+
+
    +
  1. +

    Prerequisites

    +

    The following prerequisites are required to run the local environment:

    +
      +
    • A container runtime environment such as Docker Desktop, Rancher Desktop or Podman Desktop.
    • +
    • The ability to run a BASH script, or to read one and run equivalent commands in your environment.
    • +
    • 64GB RAM and 80GB free disk space.
    • +
    +
  2. +
  3. +

    Download the required files

    +
      +
    • +

      If you have not already done so, clone the Microservices Data-Driven GitHub repository:

      +
      git clone https://github.com/oracle/microservices-datadriven
    • +
    • +

      Change into the directory with the local environment files:

      +
      cd microservices-datadriven/cloudbank-v4/local-environment
    • +
    +
  4. +
  5. +

    Start the environment

    +
      +
    • +

      Run the provided script to start the environment, including a Kubernetes cluster in a container (using k3s), Oracle Backend +for Spring Boot and Microservices and an Oracle Database instance inside that cluster.

      +
      ./obaas.sh
    • +
    • +

      It will take approximately six to ten minutes (depending on the size of your machine) for all of the containers +to reach ready/running state. You can watch the progress using this command:

      +
      watch KUBECONFIG=$(pwd)/k3s_data/kubeconfig/kubeconfig.yaml kubectl get pod -A
      +

      Note: You will need to provide the KUBECONFIG variable as shown, or export it in your shell, each time you wish to run a kubectl command to access the cluster.

      +
      +

      When the environment is fully started, the output will appear similar to this:

      +

      Completed startup +Completed startup

      +
    • +
    +
  6. +
  7. +

    Verify access to web user interfaces

    +
      +
    • +

      On your local machine, open a browser and navigate to the Spring Operations Center.

      +
    • +
    • +

      Log in using the pre-defined user obaas-admin and password Welcome-12345.

      +
    • +
    +
    +

    Note: Since this is a development environment with no DNS name, it is configured with self-signed certificates. Your browser will warn you about the connection security.

    +
    +
      +
    • +

      If you are using Chrome, click on the Advanced link and then the Proceed to localhost (unsafe) link. +If you are using a different browser, perform the equivalent actions.

      +
    • +
    • +

      The Spring Operations Center main dashboard will appear similar to this:

      +

      Spring Operations Center +Spring Operations Center

      +
    • +
    +
  8. +
+ +
+
+
+
+
+
+ + + + + + diff --git a/cloudbank/provision/install-mp/index.html b/cloudbank/provision/install-mp/index.html new file mode 100644 index 000000000..83b60b5da --- /dev/null +++ b/cloudbank/provision/install-mp/index.html @@ -0,0 +1,493 @@ + + + + + + + + + + + + + + + + + + + + + + + Install from OCI Marketplace :: CloudBank + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+
+
+ +

Install from OCI Marketplace

+ +

The Oracle Backend for Spring Boot and Microservices can be installed from OCI Marketplace.

+
+

Note: You only need to choose one of the three deployment options - local, OCI Free Tier or OCI Marketplace.

+
+
    +
  1. +

    Access the Oracle Cloud Infrastructure Marketplace listing

    +

    Open the OCI Marketplace listing, as shown in the image below:

    +

    OCI Marketplace listing +OCI Marketplace listing

    +

    Click on the Get App button.

    +
  2. +
  3. +

    Log into your Oracle Cloud Infrastructure account

    +

    You will be taken to a Sign-In page. Choose they type of account you have and click on the Sign In button. If you did not create an account in the Get Started lab, you can do so now using the Sign Up button.

    +

    Sign In page +Sign In page

    +

    Sign in to your account as you normally do, using Single Sign-On or Direct Sign-In.

    +
  4. +
  5. +

    Choose the region and compartment

    +

    In the next screen you can choose the region using the pull down in the top right hand corner, and then choose the compartment you want to install into.

    +

    Install screen +Install screen

    +

    Review the terms and restrictions, and then click on the checkbox to accept them. Then, click on Launch Stack,

    +
    +

    Note: This version of CloudBank is tested with version 1.3.0. Earlier versions may not contain all features used and you may see errors.

    +
    +
  6. +
  7. +

    Review the Create Stack page

    +

    Review the details on the Create Stack page. You may wish to update the Name or add tags. When you are ready, click on Next.

    +

    Create stack screen +Create stack screen

    +
  8. +
  9. +

    In the Backend as A Service Section, fill in the following configuration variables as needed and select Next:

    +
      +
    • Compartment : Select the compartment where you want to install Oracle Backend for Spring Boot and Microservices.
    • +
    • Application Name (optional) : A random pet name that will be used as the application name if left empty.
    • +
    • Edition : Select COMMUNITY Edition. Standard edition will give more options for the installation but those are not required or used in this LiveLab.
    • +
    • Existing Authorization Token : Leave blank.
    • +
    +

    Backend as A Service +Backend as A Service

    +
  10. +
  11. +

    If you check the checkbox Set Administrator Passwords in the Administrator Passwords section you have the option to fill in the following passwords (if not they are autogenerated):

    +
      +
    • APISIX Administrator Password (optional) : Leave blank to auto-generate.
    • +
    • Grafana Administrator Password (optional) : Leave blank to auto-generate.
    • +
    • ORACTL Administrator Password (optional) : Leave blank to auto-generate. This is the password for the obaas-admin user.
    • +
    • ORACTL User Password (optional) : Leave blank to auto-generate. This is the password for the obaas-user user.
    • +
    +

    Passwords +Passwords

    +
  12. +
  13. +

    In the Kubernetes Cluster Options. fill in the following for the OKE Clusters Options:

    +
      +
    • Public API Endpoint? : For the Live Lba you must check the checkbox Public API Endpoint
    • +
    • API Endpoint Access Control : Enter the CIDR block you want to give access to the Control Plane API. Leave the default value 0.0.0.0/0.
    • +
    • Node Pool Workers : The number of Kubernetes worker nodes (virtual machines) attached to the OKE cluster. Leave the default value of 3.
    • +
    • Node Pool Worker Shape : The shape of the node pool workers. Leave the default Shape value.
    • +
    • Node Workers OCPU : The initial number of Oracle Compute Units (OCPUs) for the node pool workers. Leave the default value of 2.
    • +
    +
    +

    NOTE: Oracle recommends that you set Control Plane Access Control to be as restrictive as possible

    +
    +

    Public Control Plane +Public Control Plane

    +
  14. +
  15. +

    In the Load Balancers Options section, leave the default values.

    +
      +
    • Enable Public Load Balancer : This option allows access to the load balancer from the internet (public IP). If not +selected, access can only be from a private VCN.
    • +
    • Public Load Balancer Access Control : Enter the CIDR block you want to give access to the Load Balancer. Default (and not recommended) is 0.0.0.0/0.
    • +
    • Public Load Balancer Ports Exposed : The ports exposed from the load balancer.
    • +
    • Minimum bandwidth : The minimum bandwidth that the load balancer can achieve.
    • +
    • Maximum bandwidth : The maximum bandwidth that the load balancer can achieve.
    • +
    +
    +

    NOTE: Oracle recommends that you set Public Load Balancer Access Control to be as restrictive as possible.

    +
    +

    Load Balancer +Load Balancer

    +
  16. +
  17. +

    In the Database Options section, leave the default values.

    +
      +
    • Autonomous Database Compute Model : Choose either ECPU (default) or OCPU compute model for the ADB. Leave the default value of ECPU
    • +
    • Autonomous Database Network Access : Choose the Autonomous Database network access. Leave the default value of SECURE_ACCESS
    • +
    • ADB Access Control : Comma separated list of CIDR blocks from which the ADB can be accessed. This only applies if SECURE_ACCESS was chosen. Leave default value of 0.0.0.0/0.
    • +
    • Autonomous Database ECPU Core Count : Choose how many ECPU cores will be elastically allocated. Leave default value of 2.
    • +
    • Allow Autonomous Database OCPU Auto Scaling : Enable auto-scaling for the ADB ECPU core count (x3 ADB ECPU). Leave the default value of un-checked.
    • +
    • Autonomous Database Data Storage Size : Choose ADB Database Data Storage Size in gigabytes. Leave the default value of 20GB.
    • +
    • Autonomous Database License Model : The Autonomous Database license model. Leave the default value of LICENSE_INCLUDED.
    • +
    • Create an Object Storage Bucket for ADB? : Leave the default value of un-checked.
    • +
    +
    +

    NOTE: Oracle recommends that you restrict by IP or CIDR addresses to be as restrictive as possible.

    +
    +

    Database Options +Database Options

    +
  18. +
  19. +

    Click Next to review your choices.

    +
  20. +
  21. +

    Complete the Review page

    +

    Review the details on the Review page. Check the box next to Run Apply. When you are ready, click on Create.

    +

    Review screen +Review screen

    +
  22. +
  23. +

    Review the apply screen

    +

    The stack will now be applied. On the Apply screen (see below) you can monitor the progress of the installation in the Logs box. The installation should take about 30 minutes to complete. This includes the time needed to create your Oracle Autonomous Database instance, your Oracle Container Engine for Kubernetes cluster and install the various components of the stack into the Kubernetes cluster.

    +

    Stack apply screen +Stack apply screen

    +
    +

    Note: While you are waiting for the installation to complete is a great time to start setting up your development environment (see the next lab). You can come back here where you are done to check the installation completed successfully.

    +
    +
  24. +
+

Verify the installation

+
    +
  1. +

    Check the logs for errors

    +

    Scroll down to the bottom of the log to see the outcome. If there was an error during installation, details will be included at the end of the log. The most common errors are due to insufficient quota for some resource. If you get an error about insufficient quota, you may need to clean up unused resources or request a quota increase for the affected resource. Once you have done that, navigate back to the stack details (for example, using the breadcrumbs) and click on the Apply to try again.

    +

    When the installation completes normally, the end of the log should look something like this:

    +
    Apply complete! Resources: 77 added, 0 changed, 0 destroyed.
    +
    +Outputs:
    +adb_ip = "Secured Access"
    +adb_name = "KATYDIDDB"
    +apisix_admin_password = <sensitive>
    +grafana_admin_password = <sensitive>
    +kubeconfig_cmd = "oci ce cluster create-kubeconfig --cluster-id ocid1.cluster.oc1... --region us-ashburn-1 --token-version 2.0.0 --kube-endpoint PUBLIC_ENDPOINT --file $HOME/.kube/config"
    +oractl_admin_password = <sensitive>
    +oractl_user_password = <sensitive>

    To get the sensitive information you need to click on the Application Information tab, and click on unlock or show to display the values:

    +

    Output screen +Output screen

    +
    +

    Note: Keep a copy of the values, you will need these in later labs.

    +
    +
  2. +
  3. +

    Verify you can access the Kubernetes cluster

    +

    In later labs, you will look at various resources in Kubernetes. You will need a Kubernetes configuration file to access the cluster. For now, accessing the cluster from OCI Cloud Shell will be sufficient to verify the installation.

    +

    Open the OCI Cloud Shell by clicking on the icon next to the region in the top right corner of the console and then clicking on Cloud Shell.

    +

    Open OCI CLoud Shell +Open OCI CLoud Shell

    +

    Run the command provided at the end of your installation log or the information from the Application Information tab,to obtain the Kubernetes configuration file. The command will be similar to this:

    +
    oci ce cluster create-kubeconfig --cluster-id ocid1.cluster.oc1.i..... --region us-ashburn-1 --token-version 2.0.0 --kube-endpoint PUBLIC_ENDPOINT --file $HOME/.kube/config

    Check that you can access the cluster using this command:

    +
    $ kubectl get pods -n obaas-admin
    +NAME                                READY   STATUS             RESTARTS   AGE
    +graalvm-compiler-79988b886c-hgw68   1/1     Running            0          10m
    +obaas-admin-66599b65-vb662          1/1     Running            0          10m
    +soc-ui-5dbd6f9cb4-kjdj8             0/1     Running            0          10m

    Your output will be slightly different, but you should see one pod listed in the output. This is enough to confirm that you have correctly configured access to the Kubernetes cluster.

    +
  4. +
  5. +

    Verify you can connect to the APISIX API Gateway

    +

    You will need to provide the correct IP address for the API Gateway in your backend environment. You can find the IP address using this command, you need the one listed in the EXTERNAL-IP column:

    +
    $ kubectl -n ingress-nginx get service ingress-nginx-controller
    +NAME                       TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
    +ingress-nginx-controller   LoadBalancer   10.123.10.127   EXTERNAL-IP   80:30389/TCP,443:30458/TCP   13d

    Now use this command (with your IP address in the column EXTERNAL-IP) to make a request to the API Gateway. You should receive a response with an HTTP Status Code 404 (Not Found) and an error message in JSON format as shown below. Don’t worry about the 404, you will deploy some services soon, but this test is enough to know the API Gateway started up successfully:

    +
    $ curl -i http://<EXTERNAL-IP>>
    +HTTP/1.1 404
    +Date: Wed, 01 Mar 2023 19:21:08 GMT
    +Content-Type: application/json
    +Transfer-Encoding: chunked
    +Connection: keep-alive
    +Vary: Origin
    +Vary: Access-Control-Request-Method
    +Vary: Access-Control-Request-Headers
    +
    +{"timestamp":"2023-03-01T19:21:08.031+00:00","status":404,"error":"Not Found","path":"/"}
  6. +
+ +
+
+
+
+
+
+ + + + + + diff --git a/cloudbank/provision/intro/index.html b/cloudbank/provision/intro/index.html index 5fe3e6441..9a3ce8201 100644 --- a/cloudbank/provision/intro/index.html +++ b/cloudbank/provision/intro/index.html @@ -3,7 +3,7 @@ - + - + Introduction :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -284,7 +302,7 @@

Prerequisites

@@ -310,8 +328,8 @@

Prerequisites

- - - + + + diff --git a/cloudbank/saga/business-logic/index.html b/cloudbank/saga/business-logic/index.html index 4306b5315..f62a26abe 100644 --- a/cloudbank/saga/business-logic/index.html +++ b/cloudbank/saga/business-logic/index.html @@ -3,7 +3,7 @@ - + @@ -25,25 +25,26 @@ The deposit service will be responsible for depositing funds into accounts. It will be an LRA participant, and so it will need to implement the LRA lifecycle actions like complete, compensate, and so on. A significant amount of the logic will be shared with the withdrawal service, so you will also create a separate class for that shared logic, following the Data Access Object pattern, to keep the business layer separate from the persistence layer."> Implement business logic :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -391,7 +396,7 @@

Implement business logic

@@ -417,8 +422,8 @@

Implement business logic

- - - + + + diff --git a/cloudbank/saga/dao/index.html b/cloudbank/saga/dao/index.html index f699cdf25..8710cc8b3 100644 --- a/cloudbank/saga/dao/index.html +++ b/cloudbank/saga/dao/index.html @@ -3,7 +3,7 @@ - + @@ -21,25 +21,26 @@ Create a Data Access Object :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -455,7 +460,7 @@

Create a Data Access Object

@@ -481,8 +486,8 @@

Create a Data Access Object

- - - + + + diff --git a/cloudbank/saga/deploy/index.html b/cloudbank/saga/deploy/index.html index b82564b0f..4c066b123 100644 --- a/cloudbank/saga/deploy/index.html +++ b/cloudbank/saga/deploy/index.html @@ -3,7 +3,7 @@ - + @@ -25,25 +25,26 @@ Note: You already created the Kubernetes secrets necessary for the account service to access the Oracle Autonomous Database in a previous module, and the transfer service does not need access to the database. You also created the journal table that is needed by the update account application in the previous module."> Deploy services :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -330,7 +335,7 @@

Deploy services

@@ -356,8 +361,8 @@

Deploy services

- - - + + + diff --git a/cloudbank/saga/deposit/index.html b/cloudbank/saga/deposit/index.html index 6907e7fe8..edb37946d 100644 --- a/cloudbank/saga/deposit/index.html +++ b/cloudbank/saga/deposit/index.html @@ -3,7 +3,7 @@ - + @@ -25,25 +25,26 @@ Create the Deposit service and scaffold methods Create a new directory in src/main/java/com/example/accounts called services and in that directory create a new Java file called DepositService."> Create the Deposit service :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -1472,7 +1477,7 @@

Acknowledgements

@@ -1498,8 +1503,8 @@

Acknowledgements

- - - + + + diff --git a/cloudbank/saga/index.html b/cloudbank/saga/index.html index 21a1d7385..22aad4b7c 100644 --- a/cloudbank/saga/index.html +++ b/cloudbank/saga/index.html @@ -3,43 +3,44 @@ - + - + - + - + - - + + Manage Sagas :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -245,7 +253,7 @@

Manage Sagas

@@ -271,8 +279,8 @@

Manage Sagas

- - - + + + diff --git a/cloudbank/saga/index.xml b/cloudbank/saga/index.xml index de3c3c142..f45ff5a09 100644 --- a/cloudbank/saga/index.xml +++ b/cloudbank/saga/index.xml @@ -3,7 +3,7 @@ Manage Sagas :: CloudBank https://oracle.github.io/microservices-datadriven/cloudbank/saga/index.html - This is a new chapter. + This module introduces the Saga pattern, a very important pattern that helps us manage data consistency across microservices. We will explore the Long Running Action specification, one implementation of the Saga pattern, and then build a Transfer microservice that will manage funds transfers using a saga. Hugo en-us diff --git a/cloudbank/saga/intro/index.html b/cloudbank/saga/intro/index.html index 5b8aec066..aa50689c1 100644 --- a/cloudbank/saga/intro/index.html +++ b/cloudbank/saga/intro/index.html @@ -3,7 +3,7 @@ - + Introduction :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -288,7 +293,7 @@

Prerequisites

@@ -314,8 +319,8 @@

Prerequisites

- - - + + + diff --git a/cloudbank/saga/learn-lra/index.html b/cloudbank/saga/learn-lra/index.html index 836dba974..887575866 100644 --- a/cloudbank/saga/learn-lra/index.html +++ b/cloudbank/saga/learn-lra/index.html @@ -3,7 +3,7 @@ - + @@ -25,25 +25,26 @@ In this module, you will explore the Long Running Action model."> Learn about Long Running Actions :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -280,7 +285,7 @@

Keeping track of loc
@@ -306,8 +311,8 @@

Keeping track of loc

- - - + + + diff --git a/cloudbank/saga/learn/index.html b/cloudbank/saga/learn/index.html index bf92378d4..de2ae64b0 100644 --- a/cloudbank/saga/learn/index.html +++ b/cloudbank/saga/learn/index.html @@ -3,7 +3,7 @@ - + @@ -25,25 +25,26 @@ Database per service The Database per service pattern is a generally accepted best practice which dictates that each service must have its own “database” and that the only way other services can access its data is through its public API. This helps to create loose coupling between services, which in turn makes it easier to evolve them independently and prevents the creation of a web of dependencies that make application changes increasingly difficult over time."> Learn about the Saga pattern :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -278,7 +283,7 @@

The Cloud Cash Transfer Saga

@@ -304,8 +309,8 @@

The Cloud Cash Transfer Saga

- - - + + + diff --git a/cloudbank/saga/prepare/index.html b/cloudbank/saga/prepare/index.html index a94e5831b..363e15670 100644 --- a/cloudbank/saga/prepare/index.html +++ b/cloudbank/saga/prepare/index.html @@ -3,7 +3,7 @@ - + Prepare the Account service :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -359,7 +364,7 @@

Prepare the Account service

@@ -385,8 +390,8 @@

Prepare the Account service

- - - + + + diff --git a/cloudbank/saga/test/index.html b/cloudbank/saga/test/index.html index 483a676f8..522fad6e8 100644 --- a/cloudbank/saga/test/index.html +++ b/cloudbank/saga/test/index.html @@ -3,7 +3,7 @@ - + Run LRA test cases :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -372,7 +377,7 @@

Run LRA test cases

@@ -398,8 +403,8 @@

Run LRA test cases

- - - + + + diff --git a/cloudbank/saga/transfer-service/index.html b/cloudbank/saga/transfer-service/index.html index c1e4838d0..fe7b8e019 100644 --- a/cloudbank/saga/transfer-service/index.html +++ b/cloudbank/saga/transfer-service/index.html @@ -3,7 +3,7 @@ - + @@ -25,25 +25,26 @@ Create a new Java Project for the transfer service. In the Explorer of VS Code open Java Project and click the plus sign to add a Java Project to your workspace."> Create the Transfer service :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -605,7 +610,7 @@

Create the Transfer service

@@ -631,8 +636,8 @@

Create the Transfer service

- - - + + + diff --git a/cloudbank/saga/withdraw-service/index.html b/cloudbank/saga/withdraw-service/index.html index 09744e020..0545a48d4 100644 --- a/cloudbank/saga/withdraw-service/index.html +++ b/cloudbank/saga/withdraw-service/index.html @@ -3,7 +3,7 @@ - + Create the Withdrawal service :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -393,7 +398,7 @@

Create the Withdrawal service

@@ -419,8 +424,8 @@

Create the Withdrawal service

- - - + + + diff --git a/cloudbank/sitemap.xml b/cloudbank/sitemap.xml index aa6b77b94..7a50b1700 100644 --- a/cloudbank/sitemap.xml +++ b/cloudbank/sitemap.xml @@ -49,7 +49,7 @@ https://oracle.github.io/microservices-datadriven/cloudbank/devenv/ide/index.html - https://oracle.github.io/microservices-datadriven/cloudbank/provision/install/index.html + https://oracle.github.io/microservices-datadriven/cloudbank/provision/install-local/index.html https://oracle.github.io/microservices-datadriven/cloudbank/saga/learn/index.html @@ -58,10 +58,7 @@ https://oracle.github.io/microservices-datadriven/cloudbank/check/learn/index.html - https://oracle.github.io/microservices-datadriven/cloudbank/cleanup/uninstall/index.html - - - https://oracle.github.io/microservices-datadriven/cloudbank/provision/verify/index.html + https://oracle.github.io/microservices-datadriven/cloudbank/cleanup/uninstall-local/index.html https://oracle.github.io/microservices-datadriven/cloudbank/account/index.html @@ -78,12 +75,18 @@ https://oracle.github.io/microservices-datadriven/cloudbank/backend/database/index.html + + https://oracle.github.io/microservices-datadriven/cloudbank/provision/install-free-trial/index.html + https://oracle.github.io/microservices-datadriven/cloudbank/devenv/jdk/index.html https://oracle.github.io/microservices-datadriven/cloudbank/saga/learn-lra/index.html + + https://oracle.github.io/microservices-datadriven/cloudbank/cleanup/uninstall-free-trial/index.html + https://oracle.github.io/microservices-datadriven/cloudbank/deploy-ide/using-vscode/index.html @@ -102,9 +105,15 @@ https://oracle.github.io/microservices-datadriven/cloudbank/account/first-service/index.html + + https://oracle.github.io/microservices-datadriven/cloudbank/provision/install-mp/index.html + https://oracle.github.io/microservices-datadriven/cloudbank/devenv/maven/index.html + + https://oracle.github.io/microservices-datadriven/cloudbank/cleanup/uninstall-mp/index.html + https://oracle.github.io/microservices-datadriven/cloudbank/saga/prepare/index.html @@ -130,13 +139,13 @@ https://oracle.github.io/microservices-datadriven/cloudbank/account/prepare-database/index.html - https://oracle.github.io/microservices-datadriven/cloudbank/saga/dao/index.html + https://oracle.github.io/microservices-datadriven/cloudbank/springai/index.html - https://oracle.github.io/microservices-datadriven/cloudbank/check/check-processing/index.html + https://oracle.github.io/microservices-datadriven/cloudbank/saga/dao/index.html - https://oracle.github.io/microservices-datadriven/cloudbank/deploy-cli/index.html + https://oracle.github.io/microservices-datadriven/cloudbank/check/check-processing/index.html https://oracle.github.io/microservices-datadriven/cloudbank/backend/apisix/index.html @@ -154,7 +163,7 @@ https://oracle.github.io/microservices-datadriven/cloudbank/devenv/kubectl-config/index.html - https://oracle.github.io/microservices-datadriven/cloudbank/deploy-ide/index.html + https://oracle.github.io/microservices-datadriven/cloudbank/deploy-cli/index.html https://oracle.github.io/microservices-datadriven/cloudbank/backend/config/index.html @@ -172,10 +181,10 @@ https://oracle.github.io/microservices-datadriven/cloudbank/saga/withdraw-service/index.html - https://oracle.github.io/microservices-datadriven/cloudbank/backend/grafana/index.html + https://oracle.github.io/microservices-datadriven/cloudbank/deploy-ide/index.html - https://oracle.github.io/microservices-datadriven/cloudbank/backend/index.html + https://oracle.github.io/microservices-datadriven/cloudbank/backend/grafana/index.html https://oracle.github.io/microservices-datadriven/cloudbank/account/extra-endpoints/index.html @@ -183,9 +192,6 @@ https://oracle.github.io/microservices-datadriven/cloudbank/devenv/sqlcl/index.html - - https://oracle.github.io/microservices-datadriven/cloudbank/cleanup/index.html - https://oracle.github.io/microservices-datadriven/cloudbank/saga/transfer-service/index.html @@ -198,6 +204,12 @@ https://oracle.github.io/microservices-datadriven/cloudbank/backend/jaeger/index.html + + https://oracle.github.io/microservices-datadriven/cloudbank/backend/index.html + + + https://oracle.github.io/microservices-datadriven/cloudbank/cleanup/index.html + https://oracle.github.io/microservices-datadriven/cloudbank/saga/deploy/index.html diff --git a/cloudbank/springai/index.html b/cloudbank/springai/index.html new file mode 100644 index 000000000..b65813a46 --- /dev/null +++ b/cloudbank/springai/index.html @@ -0,0 +1,287 @@ + + + + + + + + + + + + + + + + + + + + + + CloudBank AI Assistant :: CloudBank + + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+
+
+
Module 6
+ +

CloudBank AI Assistant

+ +

This modules introduces Spring AI +and explores how it can be used to build a CloudBank AI Assistant (chatbot) that will +allow users to interact with CloudBank using a chat-based interface. +In this module, you will learn about Retrieval Augmented Generation, Vector +Database and AI Agents.

+ +
+
+
+
+
+
+ + + + + + diff --git a/cloudbank/springai/index.xml b/cloudbank/springai/index.xml new file mode 100644 index 000000000..9eb9c716d --- /dev/null +++ b/cloudbank/springai/index.xml @@ -0,0 +1,11 @@ + + + + CloudBank AI Assistant :: CloudBank + https://oracle.github.io/microservices-datadriven/cloudbank/springai/index.html + This modules introduces Spring AI and explores how it can be used to build a CloudBank AI Assistant (chatbot) that will allow users to interact with CloudBank using a chat-based interface. In this module, you will learn about Retrieval Augmented Generation, Vector Database and AI Agents. + Hugo + en-us + + + \ No newline at end of file diff --git a/cloudbank/tags/index.html b/cloudbank/tags/index.html index 12b583588..31953d2c0 100644 --- a/cloudbank/tags/index.html +++ b/cloudbank/tags/index.html @@ -3,7 +3,7 @@ - + @@ -17,25 +17,26 @@ Tags :: CloudBank - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
@@ -237,7 +242,7 @@

Tags

@@ -263,8 +268,8 @@

Tags

- - - + + +