Git Product home page Git Product logo

oracle / microservices-datadriven Goto Github PK

View Code? Open in Web Editor NEW
59.0 13.0 83.0 379.42 MB

Sample code of application examples to build microservices with converged Oracle database and multi-cloud / hybrid cloud services

Home Page: http://oracle.com/database

License: Universal Permissive License v1.0

Shell 11.63% Java 15.59% CSS 55.30% HTML 4.99% JavaScript 3.91% Dockerfile 0.21% Python 2.12% C# 0.23% Go 0.17% HCL 3.81% PLSQL 0.39% Ruby 0.08% Starlark 0.02% Makefile 0.05% C++ 0.54% Objective-C 0.07% Objective-C++ 0.11% Kotlin 0.01% Swift 0.03% Dart 0.74%
microservices data-driven databases converged-database messaging cloud-native autonomous hybrid-cloud multi-cloud oracle-converged-database

microservices-datadriven's Introduction

Simplify microservices architecture with Converged Oracle Database

This repository contains sample code for simplifying microservices architectures by building solution examples for data-driven microservices that walk you through the creation of an open platform technology stack with the converged Oracle Autonomous Database including relational, JSON, text, spatial and graph data and using polyglot languages including Java and the Helidon MP and SE frameworks, Python and JavaScript via Node.js

Microservices are loosely-coupled service-oriented architectures with a bounded context. Microservices are increasingly used for application modernization to deliver agile application development practices. However, the data-driven nature of enterprise applications has made building, deploying, and maintaining microservices complex.

Documentation

Contributing

This project welcomes contributions from the community. Before submitting a pull request, please review our contribution guide

Security

Please consult the security guide for our responsible security vulnerability disclosure process

License

Copyright (c) 2021, 2023, Oracle and/or its affiliates.

Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.

microservices-datadriven's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

microservices-datadriven's Issues

repurpose supplier service

Supplier service should be repurposed (see blockchain use case) and the inventory service should serve the calls to add/remove/get inventory as was the case originally. This conforms to proper microservice arch more accurately re relation to pdb/schema and will allow us to use the various inventory implementation to show rest/sync communication as well as messaging.

allow ./build.sh , ./deploy.sh , etc. to work outside ws/cloudshell env

Would be very nice to allow users to work from local machine rather than cloud shell once the initial workshop setup is complete.

The two main tasks here being...

  1. either allow port of cloud shell env (ie instructions to copy "state" folder and source xyz to get state_get on path etc.) or allow local setting/override of DOCKER_REGISTRY etc.

  2. get rid of sed usage as it's not OS portable (fails on mac).

OKE Compute Shapes

Known anomalies:

  • Free trial uses VM.Standard.E2.1, LiveLabs uses VM.Standard2.1. Ideally they would be the same. What to do?
  • VM.Standard.E2.1 shapes became "End of orderability" in Feb 2021. We are still using them and they appear to work, but is there a risk they will stop working?
  • Free trial scaling test runs approximately 40% faster on free trial than LiveLabs. Is this because of the difference in compute shape?
  • My (Richard Exley) free trial account came with VM.Standard.E2.1 limit 6 - provisioned mid 2020. But this shape became "End of orderability" in Feb 2021. Do new free trial accounts have a different compute shape? Do we need to switch to a new shape? Does setup need to dynamically switch to an available shape?

Enhance Microservice Shutdown

Enhance our Microservices to respond to shutdown signals and gracefully release all resources, for example DB connections.

Refactor AQ Queues to Support Multiple DB Deployment Models

Oracle supports several deployment models - multiple CDB, multiple PDB, multiple schema, single schema. Some require AQ propagation and some do not. It should to change the deployment model without having to change the Microservice code.

Wrong OCI Core Services Selected in Some Regions - Frontend Hangs

The problem is fixed by adding a filter to the oci_core_services data definition in core.tf:

data "oci_core_services" "services" { filter { name = "name" values = ["All .* Services In Oracle Services Network"] regex = true } }

Then referring to the first element in the oci_core_service_gateway and routing and security rules:

service_id = data.oci_core_services.services.services.0.id

destination = data.oci_core_services.services.services.0.cidr_block

Tune NON_JAVA_BUILDS

Some ideas:

  1. Try running in parallel
  2. yum is slow for python on nodejs builds. Maybe download instead (as with inventory-go build)

add rest and json support to all inventory services

The inventory service is

  1. a headless service and
  2. SQL/relational access only as far as the grabdish architecture.
    However, the inventory service also serves to demonstrate equivalent functionality in different languages and frameworks and therefore we should add.
  3. A Rest endpoint (eg for report use case or some such)
  4. Use both SQL and JSON (via JSON flex-field) to query and update inventory db.

Related reading...
https://blogs.oracle.com/sql/how-to-store-query-and-create-json-documents-in-oracle-database
https://docs.oracle.com/en/database/oracle/oracle-database/18/adjsn/function-JSON_TABLE.html#GUID-0172660F-CE29-4765-BF2C-C405BDE8369A
https://docs.oracle.com/en/database/oracle/oracle-database/12.2/objff/

Add Automated Test Suite

Goals:

  • Cover all lab content
  • Cover all platforms (free tier, live labs)
  • Hands free (lights out) with minimal prep
  • Clear success or failure indication
  • Setup, Test, Teardown

Enhance Microservices to Support Planned Database Maintenance

Microservices should not crash if the database is temporarily unavailable. Functions that do not require the database should remain available. Database connections should gracefully switchover to a surviving instance on instance shutdown with no application outage.

unified observability lab

Lab 5 in data-driven ms workshop. Includes metrics, tracing, and logs for app and db tier in single-pane grafana view

Frontend UI Hangs

Occasionally, although it appears that the setup has completed successfully, the frontend UI will hang and the login dialog is not displayed. This reproduced twice on May 25. It was found that the appropriate security rules had not been created in the grabdish VCN. This should have been done automatically when the frontend services was created but for some reason this was not done. There are two security rules required:

| Security List | Type    | Stateless | Destination/Source | Protocol | Source Port range | Destination Port Range |
|---------------|---------|-----------|--------------------|----------|-------------------|------------------------|
| svcLB         | Egress  | No        | 10.0.10.0/24       | IP       | All               | <PORT>                 |
| nodepool      | Ingress | No.       | 10.0.20.0/24       | IP       | All               | <PORT>                 |

The port is listed by calling kubectl get service frontend -n msdataworkshop, for example 30101 in this output:

NAME       TYPE           CLUSTER-IP     EXTERNAL-IP      PORT(S)         AGE
frontend   LoadBalancer   10.96.225.36   129.159.33.154   443:30101/TCP   77m

add unit tests for all microservices

This should be a continuing process but this issue is specifically for setting up and creating at least one test for each microservices to that they are easy to add.

I imagine this will be run as part of the regression suite where ./test.sh includes a call to /utils/unit-tests.sh which (similar to ./deploy.sh etc in the root dir) iterates over each of the mservices running their tests.

We may need to add -DskipTests to the usual build/package commands to avoid running tests during the workshop builds.

Autoscale Lab

Turn on autoscale features the k8s and ATP database level and show how resources scale up to handle a workload.

inventory-dotnet Build Failed

Step 7/10 : FROM mcr.microsoft.com/dotnet/aspnet:5.0
Trying to pull repository mcr.microsoft.com/dotnet/aspnet ...
Get "https://mcr.microsoft.com/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

Will see if I can repro

Inter-Database Query Lab

Show how queries can be executed across data stores using SQL (with domain specific extensions) and database links.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.