OTN TechBlog

Subscribe to OTN TechBlog feed
Oracle Blogs
Updated: 10 hours 24 min ago

Economics and Innovations of Serverless

Fri, 2019-04-19 13:08

The term serverless has been one of the biggest mindset changes since the term cloud, and learning how to “think serverless” should be part of every developers cloud-native journey. This is why one of Oracle’s 10 Predictions for Developers in 2019 is “The Economics of Serverless Drives Innovation on Multiple Fronts”. Let’s unpack what we mean by economics and innovation while covering a few common misconceptions.

The Economics

Cost is only part of the story

I often hear “cost reduction” as a key driver of serverless architectures. Everyone wants to save money and be a hero for their organization. Why pay for a full time server when you can pay per function millisecond? The ultimate panacea of utility computing — pay for exactly what you need and no more. This is only part of the story.

Economics is a broad term for the production, distribution, and consumption of things. Serverless is about producing software. And software is about using computers as leverage to produce non-linear value. Facebook (really MySpace) leveraged software to change the way the world connected. Uber leveraged software to transform the transportation industry. Netflix leveraged software to change the way the world consumed movies. Software is transforming every major company in every major industry, and for most, is now at the heart of how they deliver value to end users. So why the fuss about serverless?

Serverless is About Driving Non-Linear Value

Because serverless is ultimately about driving non-linear business value which can fundamentally change the economics of your business. I’ve talked about this many times , but Ben nails it — “serverless is a ladder. You’re climbing to some nirvana where you get to deliver pure business value with no overhead.”

Pundits point out that “focus on business value” has been said many times over the years, and they’re right. But every software architecture cycle learns from past cycles and incorporates new ways to achieve this goal of greater focus, which is why serverless is such an important cycle to watch. It effectively incorporates the promise (and best) of cloud with the promise (and learnings) of SOA .

Ultimately the winning businesses reduce overhead while increasing value to their customers by empowering their developers. That’s why the economics are too compelling to ignore. Not because your CRON job server goes from $30 to $0.30/month (although a nice use case), but because creating a culture of innovation and focus on driving business value is a formula for success.

So we can’t ignore the economics. Let’s move to the innovations.

The Innovations

The tech industry is in constant motion. Apps, infrastructure, and the delivery process drive each other forward together in a ping-pong fashion. Here are a few of the key areas to watch that are contributing to forward movement in the innovation cycle, as illustrated in the “Digital Trialectic”:

Depth of Services

The web is fundamentally changing how we deliver services. We’re moving towards an “everything-as-a-service” world where important bits of functionality can be consumed by simply calling an API. Programming is changing, and this is driven largely by the depth of available services to solve problems that once plagued developers working hours.

Twilio now removes the need for SMS, voice, and now email (acquired Sendgrid) code and infrastructure. Google’s Cloud Vision API removes the need for complex object and facial detection code and infrastructure. AWS’s Ground Station removes the need for satellite communications code and infrastructure (finally?), and Oracle’s Autonomous Database replaces your existing Oracle Database code and infrastructure.

Pizzas, weather, maps, automobile data, cats – you have an endless list of things accessible across simple API calls.

Open Source

As always, serverless innovation is happening in the world of open source as well, many of which end up as part of the list of services above. The Fn Project is fully open source code my team is working on which will allow anyone to run their own serverless infrastructure on any cloud, starting with Functions-as-a-service and moving towards things like workflow as well. Come say hi in our Slack.

But you can get to serverless faster with the managed Fn service, Oracle Functions. And there are other great industry efforts as well including Knative by Google, OpenFaas by Alex Ellis, and OpenWhisk by IBM.

All of these projects focus mostly on the compute aspect of a serverless architecture. There are many projects that aim to make other areas easier such as storage, networking, security, etc, and all will eventually have their own managed service counterparts to complete the picture. The options are a bit bewildering, which is where standards can help.

Standards

With a paradox of choice emerging in serverless, standards aim to ease the pain in providing common interfaces across projects, vendors, and services. The most active forum driving these standards is the Serverless Working Group, a subgroup of the Cloud Native Compute Foundation. Like cats and dogs living together, representatives from almost every major vendor and many notable startups and end users have been discussing how to “harmonize” the quickly-moving serverless space. CloudEvents has been the first major output from the group, and it’s a great one to watch. Join the group during the weekly meetings, or face-to-face at any of the upcoming KubeCon’s.

Expect workflow, function signatures, and other important aspects of serverless to come next. My hope is that the group can move quickly enough to keep up with the quickly-moving space and have a material impact on the future of serverless architectures, further increasing the focus on business value for developers at companies of all sizes.

A Final Word

We’re all guilty of skipping to the end in long posts. So here’s the net net: serverless is the next cycle of software architecture, its roots and learnings coming from best-of SOA and cloud. Its aim is to change the way in which software is produced by allowing developers to focus on business value, which in turn drives non-linear business value. The industry is moving quickly with innovation happening through the proliferation of services, open source, and ultimately standards to help harmonize this all together.

Like anything, the best way to get started is to just start. Pick your favorite cloud, and start using functions. You can either install Fn manually or sign up for early access to Oracle Functions.

If you don’t have an Oracle Cloud account, take a free trial today.

Creating A Microservice With Micronaut, GORM And Oracle ATP

Thu, 2019-04-18 12:56

Over the past year, the Micronaut framework has become extremely popular. And for good reason, too. It's a pretty revolutionary framework for the JVM world that uses compile time dependency injection and AOP that does not use any reflection. That means huge gains for your startup and runtime performance and memory consumption. But it's not enough to just be performant, a framework has to be easy to use and well documented. The good news is, Micronaut is both of these. And it's fun to use and works great with Groovy, Kotlin and GraalVM. In addition, the people behind Micronaut understand the direction that the industry is heading and have built the framework with that direction in mind. This means that things like Serverless and Cloud deployments are easy and there are features that provide direct support for them.  

In this post we'll look at how to create a Microservice with Micronaut which will expose a "Person" API. The service will utilize GORM which is a "data access toolkit" - a fancy way of saying it's a really easy way to work with databases (from traditional RDBMS to MongoDB, Neo4J and more). Specifically, we'll utilize GORM for Hibernate to interact with an Oracle Autonomous Transaction Processing DB. Here's what we'll be doing:

  1. Create the Micronaut application with Groovy support
  2. Configure the application to use GORM connected to an ATP database.
  3. Create a Person model
  4. Create a Person service to perform CRUD operations on the Person model
  5. Create a controller to interact with the Person service

First things first, make sure you have an Oracle ATP instance up and running. Luckily, that's really easy to do and this post by my boss Gerald Venzl will show you how to set up an ATP instance in less than 5 minutes. Once you have a running instance, grab a copy of your Client Credentials "Wallet" and unzip it somewhere on your local system.

Before we move on to the next step, create a new schema in your ATP instance and create a single table using the following DDL:

You're now ready to move on to the next step, creating the Micronaut application.

Create The Micronaut Application

If you've never used it before, you'll need to install Micronaut which includes a helpful CLI for scaffolding certain elements like the application itself and controllers, etc as you work with your application. Once you've confirmed the install, run the following command to generate your basic application:

Take a look inside that directory to see what the CLI has generated for you. 

As you can see, the CLI has generated a Gradle build script, a Dockerfile and some other config files as well as a `src` directory. That directory looks like this:

At this point you can import the application into your favorite IDE, so do that now. The next step is to generate a controller:

We'll make one small adjustment to the generated controller, so open it up and add the `@CompileStatic` annotation to the controller. It should like so once you're done:

Now run the application using `gradle run` (we can also use the Gradle wrapper with `./gradlew run`) and our application will start up and be available via the browser or a simple curl command to confirm that it's working.  You'll see the following in your console once the app is ready to go:

Give it a shot:

We aren't returning any content, but we can see the '200 OK' which means the application received the request and returned the appropriate response.

To make things easier for development and testing the app locally I like to create a custom Run/Debug configuration in my IDE (IntelliJ IDEA) and point it at a custom Gradle task. We'll need to pass in some System properties eventually, and this enables us to do that when launching from the IDE. Create a new task in `build.gradle` named `myTask` that looks like so:

Now create a custom Run/Debug configuration that points at this task and add the VM options that we'll need later on for the Oracle DB connection:

Here are the properties we'll need to populate for easier copy/pasting:

Let's move to the next step and get the application ready to talk to ATP!

Configure The Application For GORM and ATP

Before we can configure the application we need to make sure we have the Oracle JDBC drivers available. Download them, create a directory called `libs` in the root of your application and place them there.  Make sure that you have the following JARs in the `libs` directory:

Modify your `dependencies` block in your `build.gradle` file so that the Oracle JDB JARs and the `micronaut-hibernate-gorm` artifacts are included as dependencies:

Now let's modify the file located at `src/main/resources/application.yml` to configure the datasource and Hibernate.  

Our app is now ready to talk to ATP via GORM, so it's time to create a service, model and some controller methods! We'll start with the model.

Creating A Model

GORM models are super easy to work with.  They're just POGO's (Plain Old Groovy Objects) with some special annotations that help identify them as model entities and provide validation via the Bean Validation API. Let's create our `Person` model object by adding a Groovy class called 'Person.groovy' in a new directory called `model`.  Populate the model as such:

Take note of a few items here. We've annotated the class with @Entity (`grails.gorm.annotation.Entity`) so GORM knows that this is an entity it needs to manage. Our model has 3 properties: firstName, lastName and isCool. If you look back at the DDL we used to create the `person` table above you'll notice that we have two additional columns that aren't addressed in the model: ID and version. The ID column is implicit with a GORM entity and the version column is auto-managed by GORM to handle optimistic locking on entities. You'll also notice a few annotations on the properties which are used for data validation as we'll see later on.

We can start the application up again at this point and we'll see that GORM has identified our entity and Micronaut has configured the application for Hibernate:

Let's move on to creating a service.

Creating A Service

I'm not going to lie to you. If you're waiting for things to get difficult here, you're going to be disappointed. Creating the service that we're going to use to manage `Person` CRUD operations is really easy to do. Create a Groovy class called `PersonService` in a new directory called `service` and populate it with the following:

That's literally all it takes. This service is now ready to handle operations from our controller. GORM is smart enough to take the method signatures that we've provided here and implement the methods. The nice thing about using an abstract class approach (as opposed to using the interface approach) is that we can manually implement the methods ourselves if we have additional business logic that requires us to do so.

There's no need to restart the application here, as we've made no changes that would be visible at this point. We're going to need to modify our controller for that, so let's create one!

Creating A Controller

Lets modify the `PersonController` that we created earlier to give us some endpoints that we can use to do some persistence operations. First, we'll need to inject our PersonService into the controller.  This too is straightforward by simply including the following just inside our class declaration:

The first step in our controller should be a method to save a `Person`.  Let's add a method annotated with `@Post` to handle this and within the method we'll call the `PersonService.save()` method.  If things go well, we'll return the newly created `Person`, if not we'll return a list of validation errors. Note that Micronaut will bind the body of the HTTP request to the `person` argument of the controller method meaning that inside the method we'll have a fully populated `Person` bean to work with.

If we start up the application we are now able to persist a `Person` via the `/person/save` endpoint:

Note that we've received a 200 OK response here with an object containing our `Person`.  However, if we tried the operation with some invalid data, we'd receive some errors back:

Since our model (very strangely) indicated that the `Person` firstName must be between 5 and 50 characters we receive a 422 Unprocessable Entity response that contains an array of validation errors back with this response.

Now we'll add a `/list` endpoint that users can hit to list all of the Person objects stored in the ATP instance. We'll set it up with two optional parameters that can be used for pagination.

Remember that our `PersonService` had two signatures for the `findAll` method - one that accepted no parameters and another that accepted a `Map`.  The Map signature can be used to pass additional parameters like those used for pagination.  So calling `/person/list` without any parameters will give us all `Person` objects:

Or we can get a subset via the pagination params like so:

We can also add a `/person/get` endpoint to get a `Person` by ID:

And a `/person/delete` endpoint to delete a `Person`:

Summary

We've seen here that Micronaut is a simple but powerful way to create performant Microservice applications and that data persistence via Hibernate/GORM is easy to accomplish when using an Oracle ATP backend.  Your feedback is very important to me so please feel free to comment below or interact with me on Twitter (@recursivecodes).

If you'd like to take a look at this entire application you can view it or clone via Github.

Oracle ACEs at APEX Connect 2019, May 7-9 in Bonn

Thu, 2019-04-18 11:36

APEX Connect 2019, the annual conference organized by DOAG (the German Oracle Applications User Group) will be held May 7-9, 2019 in Bonn, Germany. The event features a wide selection of sessions and events, covering APEX, PL and PL/SQL, and JavaScript.  Among the session speakers are the following members of the Oracle ACE Program:

Oracle ACE Director Nils de BruijinNiels de Bruijn
Business Unit Manager APEX, MT AG
Cologne, Germany

 

 

 

Oracle ACE Director Roel HartmanRoel Hartman
Director/Senior APEX Developer, APEX Consulting
Apeldoorn, Netherlands

 

 

Oracle ACE Director Heli HelskyahoHeli Helskyaho
CEO, Miracle Finland Oy
Finland

 

 

 

Oracle ACE Director John Edward ScottJohn Edward Scott
Founder, APEX Evangelists
West Yorkshire, United Kingdom

 

 

Oracle ACE Director Kamil StawiarskiKamil Stawiarski
Owner/Partner, ORA-600
Warsaw, Poland

 

 

Oracle ACE Director Martin WidlakeMartin Widlake
Database Architect and Performance Specialist, ORA600
Essex, United Kingdom

 

 

Oracle ACE Alan ArentsenAlan Arentsen
Senior Oracle Developer, Arentsen Database Consultancy
Breda, Netherlands

 

 

Oracle ACE Tobias ArnholdTobias Arnhold
Freelance APEX Developer, Tobias Arnhold IT Consulting
Germany

 

 

Oracle ACE Dietmar AustDietmar Aust
Owner, OPAL UG
Cologne, Germany

 

 

Oracle ACE Kai DonatoKai Donato
Senior Consultant for Oracle APEX Development, MT AG
Cologne, Germany

 

 

Oracle ACE Daniel HochleitnerDaniel Hochleitner
Freelance Oracle APEX Developer and Consultant
Regensburg, Germany

 

 

Oracle ACE Oliver LemmOliver Lemm
Business Unit Manager, MT AG
Cologne, Germany

 

 

Oracle ACE Richard MartensRichard Martens
Co-Owner, SMART4Solutions B.V.
Tilburg, Netherlands

 

 

Oracle ACE Robert MarzRobert Marz
Principal Technical Architect, its-people GmbH
Frankfurt, Germany

 

 

Oracle ACE Matt MulvaneyMatt Mulvaney
Senior Development Consultant, Explorer UK LTD
Leeds, United Kingdom

 

 

Oracle ACE Christian RokittaChristian Rokitta
Managing Partner, iAdvise
Breda, Netherlands

 

 

Oracle ACE Phillip SalvisbergPhilipp Salvisberg
Senior Principal Consultant, Trivadis AG
Zürich, Switzerland

 

 

Oracle ACE Sven-Uwe WellerSven-Uwe Weller
Syntegris Information Solutions GmbH
Germany

 

 

Oracle ACE Associate Carolin HagemannCarolin Hagemann
Hagemann IT Consulting
Hamburg, Germany

 

 

Oracle ACE Associate Moritz KleinMoritz Klein
Senior APEX Consultant, MT AG
Frankfurt, Germany

 

Additional Resources

Developers Decide One Cloud Isn’t Enough

Wed, 2019-04-17 08:00

Introduction

Developers have significantly greater choice today than even just a few years ago, when considering where to build, test and host their services and applications, deciding which clouds to move existing on-premises workloads to, and which of the multitude of open source projects to leverage. So why, in this new era of empowered developers and expanding choice, have so many organizations pursued a single cloud strategy?  The proliferation of new, cloud native open source projects and cloud service providers over recent years who have added capacity, functionality, tools, resources and services, has resulted in better performance, different cost models, and more choice for developers and DevOps engineers, while increasing competition among providers. This is leading into a new era of cloud choice, where the new norm will be dominated by a multi-cloud and hybrid cloud model.

As new cloud native design and development technologies like Kubernetes, serverless computing, and the maturing discipline of microservices emerge, they help accelerate, simplify, and expand deployment and development options. Users have the ability to leverage new technologies with their existing designs and deployments, and the flexibility they afford expands users’ option to run on many different platforms. Given this rapidly changing cloud landscape, it is not surprising that hybrid cloud and multi cloud strategies are being adopted by an increasing number of companies today. 

For a deeper dive into Prediction #7 of the 10 Predictions for Developers in 2019 offered by Siddhartha Agarwal, “Developers Decide One Cloud Isn’t Enough”, we look at the growing trend for companies and developers to choose more than one cloud provider. We’ll examine a few of the factors they consider, the needs determined by a company’s place in the development cycle, business objectives, and level of risk tolerance, and predict how certain choices will trend in 2019 and beyond.

 

Different Strokes

We are in a heterogeneous IT world today. A plethora of choice and use cases, coupled with widely varying technical and business needs and approaches to solving them, give rise to different solutions. No two are exactly the same, but development projects today typically fall within the following scenarios.

A. Born in the cloud development – these suffer little to no constraint imposed by existing applications; it is highly efficient and cost-effective to begin design in the cloud. They are naturally leveraging containers and new open source development tools like serverless (https://fnproject.io/) or service mesh platforms (e.g., Istio)  A decade ago, startup costs based on datacenter needs alone were a serious barrier to entry for budding tech companies – cloud computing has completely changed this.

B. On premises development moving to cloud – enterprises in this category have many more factors to consider. Java teams for example are rapidly adopting frameworks like Helidon and GraalVM to help them move to a microservice architecture and migrate applications to the cloud. But will greenfield development projects start only in cloud? Do they migrate legacy workloads to cloud? How do they balance existing investments with new opportunities? And what about the interface between on-premises and cloud?

C. Remaining mostly on premises but moving some services to cloud – options are expanding for those in this category. A hybrid cloud approach has been expanding, and we predict will continue to expand, over the course of at least the next few years.  The cloud native stacks available on premises now mirror the cloud native stacks in the cloud thus enabling a new generation of hybrid cloud use cases. An integrated and supported cloud native framework that spans on premises and cloud options delivers choice once again.  And, security, privacy and latency concerns will dictate some of their unique development project needs.

 

If It Ain’t Broke, Don’t Fix It?

IT investments are real. Inertia can be hard to overcome. Let’s look at the main reasons for not distributing workloads across multiple clouds.  

  • Economy of scale tops the list, as most cloud providers will offer discounts for customers who go all in; larger workloads on one cloud provide negotiating leverage.
  • Development staff familiarity with one chosen platform makes it easier to bring on and train new developers; ramp time to productivity increases.
  • Custom features or functionality unique to the main cloud provider may need to be removed or redesigned in moving to another platform. Even on supposedly open platforms, developers must be aware of the not-so-obvious features impacting portability.
  • Geographical location of datacenters for privacy and/or latency concerns in less well-served areas of the world may also inhibit choice, or force uncomfortable trade-offs.
  • Risk mitigation is another significant factor, as enterprises seek to balance conflicting business needs with associated risks. Lean development teams often need to choose between taking on new development work vs modernizing legacy applications, when resources are scarce.

Change is Gonna Do You Good

These are valid concerns, but as dev teams look more deeply into the robust services and offerings emerging today, the trend is to diversify.

The most frequently cited concern is that of vendor lock-in. This counter-argument to that of economy of scale says that the more difficult it is to move your workloads off of one provider, the less motivated that vendor is to help reduce your cost of operations. For SMBs (small to mid-sized businesses) without a ton of leverage in comparison to large enterprises, this can be significant. Ensuring portability of workloads is important. A comprehensive cloud native infrastructure is imperative here – one that includes container orchestration but also streaming, CI/CD, and observability and analysis (e.g, Prometheus and Grafana). Containers and Kubernetes deliver portability, provided your cloud vendor uses unmodified open source code. In this model, a developer can develop their web application on their laptop, push it into a CI/CD system on one cloud, and leverage another cloud for managed Kubernetes to run their container-based app. However, the minute you start using specific APIs from the underlying platform, moving to another platform is much more difficult. AWS Lambda is one of many examples.

Mergers, acquisitions, changing business plans or practices, or other unforeseen events may impact a business at a time when they are not equipped to deal with it. Having greater flexibility to move with changing circumstances, and not being rushed into decisions, is also important. Consider for example, the merger of an organization that uses an on-premises PaaS, such as OpenShift, merging with another organization that has leveraged the public cloud across IaaS, PaaS and SaaS. It’s important to choose interoperable technologies to anticipate these scenarios.

Availability is another reason cited by customers. A thoughtfully designed multi-cloud architecture not only offers potential negotiating power as mentioned above, but also allows for failover in case of outages, DDoS attacks, local catastrophes, and the like. Larger cloud providers with massive resources and proliferation of datacenters and multiple availability domains offer a clear advantage here, but it also behooves the consumer to distribute risk across not only datacenters, but over several providers.

Another important set of factors is related to cost and ROI. Running the same workload on multiple cloud providers to compare cost and performance can help achieve business goals, and also help inform design practices.  

Adopting open source technologies enables businesses to choose where to run their applications based on the criteria they deem most important, be they technical, cost, business, compliance, or regulatory concerns. Moving to open source thus opens up the possibility to run applications on any cloud. That is, any CNCF-certified Kubernetes managed cloud service can safely run Kubernetes – so enterprises can take advantage of this key benefit to drive a multi-cloud strategy.

The trend in 2019 is moving strongly in the direction of design practices that support all aspects of a business’s goals, with the best offers, pricing and practices from multiple providers. This direction makes enterprises more competitive – maximally productive, cost-effective, secure, available, and flexible regarding platform choice.

 

Design for Flexibility

Though having a multi-cloud strategy seems to be the growing trend, it does come with some inherent challenges. To address issues like interoperability among multiple providers and establishing depth of expertise with a single cloud provider, we’re seeing an increased use of different technologies that help to abstract away some of the infrastructure interoperability hiccups. This is particularly important to developers, who seek the best available technologies that fit their specific needs.

Serverless computing seeks to reduce the awareness of any notion of infrastructure. Consider it similar to water or electricity utilities – once you have attached your own minimal home infrastructure to the endpoint offered by the utility, you simply turn on the tap or light switch, and pay for what you consume. The service scales automatically – for all intents and purposes, you may consume as much output of the utility or service as desired, and the bill goes up and down accordingly. When you are not consuming the service, there is no (or almost no) overhead.  

Development teams are picking cloud vendors based on capabilities they need. This is especially true in SaaS. SaaS is a cloud-based software delivery model with payment based on usage, rather than license or support-based pricing. The SaaS provider develops, maintains and updates the software, along with the hardware, middleware, application software, and security. SaaS customers can more easily predict total cost of ownership with greater accuracy. The more modern, complete SaaS solutions also allow for greater ease of configuration and personalization, and offer embedded analytics, data portability, cloud security, support for emerging technologies, and connected, end-to-end business processes.

Serverless computing not only provides simplicity through abstraction of infrastructure, its design patterns also promote the use of third-party managed services whenever possible. This provides flexibility and allows you to choose the best solution for your problem from the growing suite of products and services available in the cloud, from software-defined networking and API gateways, to databases and managed streaming services. In this design paradigm, everything within an application that is not purely business logic can be efficiently outsourced.

More and more companies are finding it increasingly easy to connect elements together with Serverless functionality for the desired business logic and design goals. Serverless deployments talking to multiple endpoints can run almost anywhere; serverless becomes the “glue” that is used to make use of the best services available, from any provider.

Serverless deployments can be run anywhere, even on multiple cloud platforms. Hence flexibility of choice expands even further, making it arguably the best design option for those desiring portability and openness.

 

Summary

There are many pieces required to deliver a successful multi-cloud approach. Modern developers use specific criteria to validate if a particular cloud is “open” and whether or not it supports a multi-cloud approach. Does it have the ability to

  • extract/export data without incurring significant expense or overhead?
  • be deployed either on-premises or in the public cloud, including for custom applications, integrations between applications, etc.?
  • monitor and manage applications that might reside on-premises or in other clouds from a single console, with the ability to aggregate monitoring/management data?

And does it have a good set of APIs that enables access to everything in the UI via an API? Does it expose all the business logic and data required by the application? Does it have SSO capability across applications?

The CNCF (Cloud Native Computing Foundation) has over 400 cloud provider, user, and supporter members, and its working groups and cloud events specification engage these and thousands more in the ongoing mission to make cloud native computing ubiquitous, and allow engineers to make high-impact changes frequently and predictably with minimal toil.

We predict this trend will continue well beyond 2019 as CNCF drives adoption of this paradigm by fostering and sustaining an ecosystem of open source, vendor-neutral projects, and democratizing state-of-the-art patterns to make these innovations accessible for everyone.

Oracle is a platinum member of CNCF, along with 17 other major cloud providers. We are serious about our commitment to open source, open development practices, and sharing our expertise via technical tutorials, talks at meetups and conferences, and helping businesses succeed. Learn more and engage with us at cloudnative.oracle.com, and we’d love to hear if you agree with the predictions expressed in this post. 

Podcast: On the Highway to Helidon

Tue, 2019-04-16 23:00

Are you familiar with Project Helidon? It’s an open source Java microservices framework introduced by Oracle in September of 2018.  As Helidon project lead Dmitry Kornilov explains in his article Helidon Takes Flight, "It’s possible to build microservices using Java EE, but it’s better to have a framework designed from the ground up for building microservices."

Helidon consists of a lightweight set of libraries that require no application server and can be used in Java SE applications. While these libraries can be used separately, using them in combination provides developers with a solid foundation on which to build microservices.

In this program we’ll dig into Project Helidon with a panel that consists of two people who are actively engaged in the project, and two community leaders who have used Helidon in development projects, and have also organized Helidon-focused Meet-Ups.

This program was recorded on Friday, March 8, 2019. So let’s journey through time and space and get to the conversation. Just press play in the widget.

The Panelists Dmitry Kornilov

Dmitry Kornilov
Senior Software Development Manager, Oracle; Project Lead, Project Helidon
Prague, Czech Republic

 

Tomas Langer

Tomas Langer
Consulting Member of Technical Staff, Oracle; Member of the Project Helidon Team
Prague, Czech Republic

 

Oracle ACE Associate José Rodrigues

José Rodrigues
Principal Consultant and Business Analyst, Link Consulting; Co-Organizer, Oracle Developer Meetup Lisbon
Lisbon, Portugal

 

Oracle ACE Phil Wilkins

Phil Wilkins
Senior Consultant, Capgemini; Co-Organizer. Oracle Developer Meetup London
Reading, UK

 

Relevant Resources

Latest Blog Posts from Oracle ACEs: April 7-13

Tue, 2019-04-16 14:00

Busy as bees, these ACEs have been, keeping the buzz going with another week's worth of posts offering the kind of technical experience and expertise that can help to keep you from getting stung on your next project.

Oracle ACE Director Franck PanchotFrank Panchot
Data Engineer, CERN
Lausanne, Switzerland

 

 

 

Oracle ACE Jhonata LamimJhonata Lamim
Senior Oracle Consultant, Exímio Soluções em TI
Santa Catarina, Brazil

 

 

Oracle ACE Marco MischkeMarco Mischke
Team Lead, Database Projects, Robotron Datenbank-Software GmbH
Dresden, Germany

 

 

Oracle ACE Noriyoshi ShinodaNoriyoshi Shinoda
Database Consultant, Hewlett Packard Enterprise
Tokyo, Japan

 

 

Oracle ACE Paul GuerinPaul Guerin
Database Service Delivery Leader, Hewlett-Packard
Philippines
Twitter LinkedIn
 

 

Oracle ACE Ricardo GiampaoliRicardo Giampaoli
EPM Architect Consultant, The Hackett Group
Leinster, Ireland

 

 

Oracle ACE Rodrigo DeSouzaRodrigo de Souza
Solutions Architect, Innive Inc
Rio Grande do Sul, Brazil

 

 

Oracle ACE Sean StuberSean Stuber
Database Analyst, American Electric Power
Columbus, Ohio

 

 

Oracle ACE Stefan KoehletStefan Koehler
Independent Oracle Performance Consultant and Researcher
Bavaria, Germany

 

 

 

Oracle ACE Yong JingYong Jing
System Architect Manager, Changde Municipal Human Resources and Social Security Bureau
Changde City, China

 

 

Oracle ACE Associate Emad Al-MousaEmad Al-Mousa
Senior IT Consultant, Saudi Aramco
Saudi Arabia

 

 

Oracle ACE Eugene FedorenkoEugene Fedorenko
Senior Architect, Flexagon
De Pere, Wisconsin

 

 

Related Resources Oracle ACE Guide

Oracle ACE Director Oracle ACE Director: Top-tier community members who engage more closely with Oracle.
Oracle ACE Oracle ACE: Established Oracle advocates who are well known in the community.
Oracle ACE Associate Oracle ACE Associate: Entry point for the Oracle ACE program

Git Branch Protection in Oracle Developer Cloud

Tue, 2019-04-16 11:26

In the April release of Oracle Developer Cloud, we introduced a feature you can use to protect a specific branch of a Git repository hosted by Oracle Developer Cloud. This blog should help you understand the options we introduced.

Who has access to branch protection?

The only one allowed to configure branch protection for a Git repository is the user with the Project Owner role for the project in which the Git repository was created.

Where can we find the branch protection option?

To access this feature, select the Project Administration tab on the left navigation bar and then select the Branches tile in Developer Cloud.  This feature is accessible to a Project Owner, not to a Project Member.

 

Branch Protection Settings – Getting Started

To get started with setting branch protections, select the Git repository and the branch in the Branches tab. The dropdown lists all the repositories in the project and all the branches created for the selected repository.  In the following screenshot, I selected the NodeJSMicroService.git repository and the master branch.

 

Branch Protection – Options

There are four options for branch protection:

  • Open
  • Requires Review
  • Private
  • Frozen

By default, every branch of every Git repository is Open.

 

Branch Protection Options – Details

Open

By default, any branch of a given Git repository has a branch protection type of Open. This means there are no restrictions on the branch. You can still impose two rules without imposing code merge rules by selecting one or both of the following checkboxes:

Do not allow forced pushes: Select this option to ensure that, if there are any merge conflicts, no code can be pushed to the branch using the force push provision in Git.

Do not allow renaming or deleting the branch: Select this option to ensure that nobody can rename or delete the branch. The branch cannot be deleted manually or as part of the merge request.

You can save the configuration by clicking the Save button or discard it by clicking the Discard button.

 

Requires Review

If the Project Owner opts for this branch protection option, the code will be reviewed and approved by the configured reviewer for any push or code merge to take place. This is very useful when it is used with the master branch, to avoid any direct push or code merge to it without prior review. You can configure the reviewer(s) who are part of the project and set the criteria for approval. The Criteria for approval dropdown lets you configure whether an approval is required from all the configured reviewers, just one reviewer, or any two of them.

In addition to the review criteria, there are few other checkboxes that can help provide you with more comprehensive coverage as part of this protection option.

Requires Successful Build:  Select this checkbox to ensure that the review branch to be merged with the selected branch had a successful last build.

Reapproval needed when the branch is updated: Select this checkbox to ensure that, if a change is pushed to a branch after some reviewers have approved the merge request, the merge will only happen after the reviewers reapprove the merge request.

Changes pushed to the target branch must match review content: Select this checkbox to ensure that the reviewed code and the merged code are one and the same.

You can save the configuration by clicking the Save button or discard it by clicking the Discard button.

Private

This branch protection option ensures that only user(s) who have been configured or designated as branch owners will be able to push the code to the branch directly. All other users will have to create a merge request to push their code to this branch. This option makes sense when the user(s) have branched the code to work on a fix or enhancement and you want to restrict the ability to push code to this branch to a defined set of people.

Note: A Project Owner may not be a branch owner.

You can also impose two additional rules by selecting one or both of the following checkboxes:

Do not allow forced pushes: Select this checkbox to ensure that, if there are any merge conflicts, no code can be pushed to the branch using the force push provision in Git.

Do not allow renaming or deleting the branch: Select this checkbox to ensure that nobody can rename the branch or delete it manually or as part of the merge request.

You can save the configuration by clicking the Save button or discard it by clicking the Discard button.

 

Frozen:

This probably an easy but crucial branch protection option. As the name suggests, it freezes the branch and prevents any further changes. This option comes in handy during code freeze for the release or master branch. Once a branch has been marked as Frozen, it can only be undone by the Project Owner.

You can save the configuration by clicking the Save button or discard it by clicking the Discard button.

Branch protection can help streamline the Release Management for the project and help enforce best practices in your development process.

To learn more about this and other new features in Oracle Developer Cloud,  take a look at the What's New in Oracle Developer Cloud Service document and the links it provides to our product documentation. If you have any questions, you can reach us on the Developer Cloud slack channel or in the online forum.

Happy Coding!

DevSecOps and Other New Feature in Developer Cloud - April Update

Sat, 2019-04-13 09:27

Over the weekend we rolled out an update to Oracle Developer Cloud - your DevOps and Agile platform in the Oracle Cloud. A key new capability we added is security checks for your Java apps as part of our DevOps pipelines. Read below to learn more about this and other features available for you.

DevSecOps - Automate Code Security Checks

Keeping up to date with the latest information about security risks in your code can be a challenge, but not doing this can put your company and your customers at risk. We all heard stories about hackers leveraging well known security britches that companies forgot to patch. As your application grows this becomes even more challenging as you struggle to keep track of the set of public libraries you are using.

With the new version of Oracle Developer Cloud we add DevSecOps functionality that scans your code against a database of known security vulnerabilities and alerts you if your code is using libraries with known security issues. In our first release we scan Java code for projects that leverage Maven as their build framework.

You can setup automatic jobs to review your code, report the results, and stop the roll out of vulenrable apps. You can also automatically add a task to the issue tracking system in DevCS to help the team keep an eye on fixing the issue.

build setup

The build job will give you a detailed report with links to more information about every vulnerability we identify in your code.

security report

YAML Based Build and Pipeline Definition

Following the "Infrastructure as Code" approach Developer Cloud now allows you to define build jobs and pipelines using YAML files. These files can be stored in the Git repositories in DevCS, and versioned like the rest of your code. DevCS scans your git repositories for these files (specific directory), and creates or updates jobs and pipelines automatically when those are changed (in the master branch). This provides a compliment approach for defining your CI/CD in parallel to the visual approach using the DevCS interface.

Enhanced Git Branch Protection

You now have more capabilities to restrict what changes can be done to specific code branches. New branch types include branches that require review, are private, or frozen. For example, a branch that is marked as "requires review" limits the ability to push changes by requiring code review by other team members, successful build job, and other combinations of conditions.

Branch Restrictions

Deployment Build Step

Up until this release deployment was a separate part from our build pipelines. In the new release we are introducing a new step type in your build jobs that can do deployment to Oracle Cloud services. This allows you to add these deployment-jobs to pipelines in an easier way. In addition we connected our deployment step with the environment feature in DevCS. This way you define the connections to your cloud services only once, and then you are able to reuse them in various jobs.

Deployment Step

To learn more about these and other new features have a look at the "What's New" document and the links it provide for our product documentation. If you have further questions, reach us on the Developer Cloud slack channel or the online forum.

Mark Your Calendars: Big Data Startup Molecula Goes Cloud Native

Thu, 2019-04-11 19:07

In this webcast, Matt Jaffee from Molecula will share his experience getting their Pilosa environment set up with Oracle Cloud Infrastructure. In addition, the Oracle Cloud product team will provide details around four recently announced Cloud Native Services: Resource Manager for Terraform-based automation, Streaming, Monitoring and Notifications. Learn why you should use these services and how you can get started.

Sign up: Webcast registration link

Time: April 23, 2019 10:00 a.m. - 11:00 a.m. PT

Speaker Details:

Matt Jaffee is a Lead Engineer/Developer Evangelist/Sales Engineer/DevOps Engineer and Chief Devourer of Breakfast Tacos (a highly contested title) at Molecula. He came to software development by way of an undergraduate degree in Astrophysics and a Master's in Computer Science. He's worked on networking, desktop apps, GPUs, data pipelines, and web apps, but feels most at home optimizing Pilosa – the open source indexing powerhouse at the heart of Molecula.

Akshai Parthasarathy is originally from India and spent his teenage years in Trinidad and Tobago before coming to study in the US. He worked at large and small companies prior to his current role as a Product Marketer at Oracle Cloud.  He likes being at the intersection of technology and marketing. 

Mark de Visser moved from The Netherlands to the Bay Area in the nineties and has worked in technical, product management and marketing roles since then. One of the early enthusiasts for open source, he played a key role introducing Enterprise Linux at Red Hat, and has been involved with developer and data center technologies ever since. He is now a product manager at Oracle Cloud Infrastructure, focused on the portfolio of cloud native technologies.

 

 

Latest Blog Posts from Oracle ACEs: March 31 - April 6, 2019

Thu, 2019-04-11 13:07

From time to time we all could use a little help getting all the pieces to fit. This collection of the latest technical blog posts from members of the Oracle ACE program from around the world might be exactly what you need to solve a persistent problem or complete a project. Or, at the very least, somewhere in this list of 21 posts from 14 ACEs you just might pick up a tip or two that will help you to avoid a migraine-inducing situation.

Get it together.

Oracle ACE Director Franck PanchotFranck Pachot
Data Engineer, CERN
Lausanne, Switzerland
Oracle ACE Dirk NachbarDirk Nachbar
Senior Consultant, Trivadis AG
Bern, Switzerland
Oracle ACE Eduardo LegattiEduardo Legatti
Administrador de Banco de Dados - DBA
Minas Gerais, Brazil
Oracle ACE Laurent LeturgezLaurent Leturgez
President/CTO, Premiseo
Lille, France
Oracle ACE Marcel HofstettMarcel Hofstetter
CEO/Enterprise Consultant, JomaSoft
St. Gallen, Switzerland
Oracle ACE Marko MischkeMarco Mischke
Team Lead, Database Projects, Robotron Datenbank-Software GmbH
Dresden, Germany
Oracle ACE Noriyoshi ShinodaNoriyoshi Shinoda
Hewlett-Packard Japan, Ltd.
Tokyo, Japan
Oracle ACE Peter ScottPeter Scott
Principal and Owner, Sandwich Analytics
Pays de la Loire, France
Oracle ACE Scott WesleyScott Wesley
Systems Consultant/Trainer, SAGE Computing Services
Perth, Australia
Oracle ACE Zaheer SyedZaheer Syed
Oracle Application Specialist, Tabadul
Saudi Arabia
  Oracle ACE Talip Hakan OxtyurkTalip Hakan Ozturk
Co-Founder, Veridata Information Technologies
Istanbul, Turkey
Oracle ACE Yong JingYong Jing
System Architect Manager, Changde Municipal Human Resources and Social Security Bureau
Changde City, China
  Oracle ACE Associate Emad Al-MousaEmad Al-Mousa
Senior IT Consultant, Saudi Aramco
Saudi Arabia
Oracle ACE Associate Simo VilmunenSimo Vilmunen
Technical Architect, Uponor
Toronto, Canada
Additional Resources

Latest Blog Posts from Oracle ACEs: March 31 - April 6, 2019

Thu, 2019-04-11 13:07

From time to time we all could use a little help getting all the pieces to fit. This collection of the latest technical blog posts from members of the Oracle ACE program from around the world might be exactly what you need to solve a persistent problem or complete a project. Or, at the very least, somewhere in this list of 21 posts from 14 ACEs you just might pick up a tip or two that will help you to avoid a migraine-inducing situation.

Get it together.

Oracle ACE Director Franck PanchotFranck Pachot
Data Engineer, CERN
Lausanne, Switzerland

 

 

Oracle ACE Dirk NachbarDirk Nachbar
Senior Consultant, Trivadis AG
Bern, Switzerland

 

 

Oracle ACE Eduardo LegattiEduardo Legatti
Administrador de Banco de Dados - DBA
Minas Gerais, Brazil

 

 

Oracle ACE Laurent LeturgezLaurent Leturgez
President/CTO, Premiseo
Lille, France

 

 

Oracle ACE Marcel HofstettMarcel Hofstetter
CEO/Enterprise Consultant, JomaSoft
St. Gallen, Switzerland

 

 

Oracle ACE Marko MischkeMarco Mischke
Team Lead, Database Projects, Robotron Datenbank-Software GmbH
Dresden, Germany

 

 

Oracle ACE Noriyoshi ShinodaNoriyoshi Shinoda
Hewlett-Packard Japan, Ltd.
Tokyo, Japan

 

 

Oracle ACE Peter ScottPeter Scott
Principal and Owner, Sandwich Analytics
Pays de la Loire, France

 

 

Oracle ACE Scott WesleyScott Wesley
Systems Consultant/Trainer, SAGE Computing Services
Perth, Australia

 

 

Oracle ACE Zaheer SyedZaheer Syed
Oracle Application Specialist, Tabadul
Saudi Arabia
 

 

 

 

Oracle ACE Yong JingYong Jing
System Architect Manager, Changde Municipal Human Resources and Social Security Bureau
Changde City, China
 

 

 

Oracle ACE Associate Emad Al-MousaEmad Al-Mousa
Senior IT Consultant, Saudi Aramco
Saudi Arabia

 

 

Oracle ACE Associate Simo VilmunenSimo Vilmunen
Technical Architect, Uponor
Toronto, Canada

 

 

Additional Resources

Latest ACE Technical Articles: March 2019

Tue, 2019-04-09 11:05

What does is take to spend countless hours hunched over a keyboard pounding out code, only to hunch yet again to write a technical article? Beyond the necessary technical skill and expertise, my guess is that it also takes massive quantities of coffee. I have no hard evidence to support that theory other than the long lines at any Starbucks within range of any developer conference. I didn't ask these ACEs how much coffee they consumed as they wrote these articles. They may not drink coffee at all. But the articles listed below are clear evidence that these fine people had the energy and the inclination to transfer their expertise and experience onto the page were you can absorb it.

So pour yourself a cup of whatever keeps you going and soak up some of what these ACEs are serving,

Oracle ACE Director Nassayam BashaNassyam Basha
Database Expert, eProseed
Oracle ACE Director Syed Jaffar HussainSyed Jaffar Hussain
Author, Speaker, Oracle Evangelist, Award winning DBA
Oracle ACE David FitzjarrellDavid Fitzjarrell
Oracle Database Administrator, Pinnacol Assurance
Oracle ACE Michael GanglerMichael Gangler
Database Expert, eProseed
Oracle ACE Asscociate Jian JiangJian Jiang
Yunqu Tech
  Oracle ACE Associate Bin HongBin Hong
Senior MySQL DBA, Shanghai Action Information Technology Co., Ltd.
Additional Resources

The Power of Functional Programming

Mon, 2019-04-08 02:36

Oracle has added support to serverless computing on the cloud that enables developers to leverage programming languages that support Functional programming like Kotlin. Oracle Functions can be thought of as Function-as-a-Service (FaaS).

I will attempt to throw some light on Functional Programming in this blog.

What is Functional Programming?

Functional Programming paradigm can be equated to the mathematical equivalent of y = fn(x).

Mathematical definition:

A function is a process or a relation that associates each element x of a set X, the domain of the function, to a single element y of another set Y (possibly the same set), the codomain of the function.

Function

How does functions benefit programmers?

Functions have certain properties that make it favorable, especially when you want your code to seamless work in a multi threaded concurrent environment. Some of its notable properties are:

  • Functions are idempotent, that is calling a function multiple times with the same input yields the same output.
  • Functions can be chained. For example,

    Given two functions f : X → Y {\displaystyle f\colon X\to Y} f\colon X\to Y and g : Y → Z {\displaystyle g\colon Y\to Z} {\displaystyle g\colon Y\to Z} such that the domain of g is the codomain of f, their composition is the function g ∘ f : X → Z {\displaystyle g\circ f\colon X\rightarrow Z} g\circ f\colon X\rightarrow Z defined by

    ( g ∘ f ) ( x ) = g ( f ( x ) ) . {\displaystyle (g\circ f)(x)=g(f(x)).} (g\circ f)(x)=g(f(x)).

  • Functions are associative, if one of ( h ∘ g ) ∘ f {\displaystyle (h\circ g)\circ f} {\displaystyle (h\circ g)\circ f} and h ∘ ( g ∘ f ) {\displaystyle h\circ (g\circ f)} {\displaystyle h\circ (g\circ f)} is defined, then the other is also defined, and they are equal. Thus, one writes h ∘ g ∘ f = ( h ∘ g ) ∘ f = h ∘ ( g ∘ f ) . {\displaystyle h\circ g\circ f=(h\circ g)\circ f=h\circ (g\circ f).} {\displaystyle h\circ g\circ f=(h\circ g)\circ f=h\circ (g\circ f).}

These properties enforce immutability in the way the functions are written. For example, in Java streams, only variables declared as final can utilized inside the anonymous functions used in streams.This makes functions to be easily utilized by parallel streams.

Functional Programming Constructs

Traditionally functions take parameters like primitive types. However Functions in Functional Programming, can consume other functions as well. These functions are called higer-order functions. Like in Python, functions in Kotlin are first-class citizens - they can be assigned to variables and passed around as parameters. The type a function is a function type, which is indicated with a parenthesized parameter type list and an arrow to the return type. Consider this function:

fun safeDivide(numerator: Int, denominator: Int) =
    if (denominator == 0.0) 0.0 else numerator.toDouble() / denominator

It takes two Int parameters and returns a Double so its type is (Int,Int) -> Double. We can reference the function itself by prefixing its name with ::, and we can assign it to a variable (whose type would normally be inferred, but we show the type signature for demonstration):

val f: (Int, Int) -> Double = ::safeDivide

When you have a variable or parameter of function type (sometimes called a function reference), you can call it as if it were an ordinary function, and that will cause the referenced function to be called:

val quotient = f(3.14, 0.0)

Kotlin

Kotlin is an  open source, cross platform, statically typed, general purpose programming language with type inference. Kotlin is designed to be fully interoperable with Java, and the JVM version of its standard library depends on the Java Class Library,[2] but type inference allows its syntax to be more concise. Kotlin mainly targets the JVM, but also compiles to JavaScript or native code (via LLVM). Kotlin is sponsored by JetBrains and Google through the Kotlin Foundation.

Let us see a sample problem, that I have solved in traditional OOP (Object oriented programming) and see how we can solve it in FP (Functional programming).

Functional Programming in Action

Let us now see functional programming in action. I will be demonstrating functional programming using Kotlin.

Sample Problem

Suppose you need to design a system that facilitates circumnavigation of the Mars terrain (simplified to a grid). The system is given the upper-right corner coordinates (lower left being implied as 0,0). It is also given the position of the rover on the grid in the form (x, y, d) where x and y are positions on the x and y axis of the grid and d is the direction in which the rover is facing, being one of these values (N - 'North', S - 'South', E - 'East', W - 'West'). The system is also given a set of instructions that the rover should use to navigate the grid, character sequence with values being (L - turn left by 90º, R - turn right by 90º, M - move to the next grid position without changing direction).

Sample Input 

5 5

1 2 N

LMLMLMLMM

Expected Output

1 3 N

Design

You have a Rover, a Plateau (terrain) and a Main object that will call invoke and instruct the Rover.

The Main initializes the Plateau

Code - OOP

Below is my implementation of the Rover class in OOP. Available on GitHub

Code - FP

Below is the functional version of the same code.Code available on Github

Explanation

You can see how concise this code looks compared to the OOP approach used to solve the same problem here

I have used fold to reduce the the sequence of instructions to a single final position, which is the destination expected.

Fold takes an accumulator and element of list/map, combines/reduces and returns this value as accumulator to next element and so on, till the last element is completed.

Fold is similar to Reduce except that it takes and initial value, whereas Reduce copies the first element to the accumulator. Also Fold can be used when the accumulator is of a different type than the list or map.

The crux of the problem is converting the sequence of instructions given as a string to a position on the grid.

So, given instructions 'MML' tells the rover to move two spaces in which ever direction it is facing and the turn left.

  • Split the string(ins) into a Character Sequence.
  • Pass the initial position of Rover to Fold
  • For each char instruction('L', 'R' or 'M'), turn left, right or move the rover respectively.

More on functional constructs available on Kotlin - here

References

Upcoming ACE-Organized Meet-Ups, April-May 2019

Thu, 2019-04-04 06:00

Given their much smaller scale and more intimate feel, meet-ups are a great way to absorb technical knowledge and expertise without the crowds and travel that are factors in big conferences. The meet-ups listed below are scheduled over the next several weeks, and were organized by members of the Oracle ACE Program. If you're in the neighborhood, stop in!

Event Organizer
Oracle ACE Wataru Morohashi
Wataru Morohashi Topic: Oracle Database入学式 2019 Date: Wednesday, April 17, 2019
19:00-20:30 Organization: Japan Oracle User Group (JPOUG) Location: NTT Data Advanced Technology Co., Ltd. Collaboration Room 
1-15-7 Tsukishima, Chuo-ku, Tokyo Pacific Marks Tsukishima 1F Description: This is a seminar-style event, presented by Oracle ACE Ryota Watanabe, is intended for those who are new to Oracle Database and want to learn the basics. 

 

Event Organizer
Oracle ACE Patrick Barel
Patrick Barel Topic: Getting started with JavaScript for PL / SQL and APEX Developers Date: Friday, May 3, 2019
8:30 am - 6:00 pm Organization: Qualogy Location: NBC Congrescentrum, Blokhoeve 1, 3438 LC, Nieuwegein or  
Oracle Netherlands, Hertogswetering 163-167, 3543 AS, Utrecht  Description: For SQL and PL / SQL developers, there is no more powerful framework than Oracle Application Express (APEX). But at the end of the day, APEX creates web apps and JavaScript programs the web. The role of JavaScript in APEX is constantly increasing. Both for the makers of APEX and the users (developers). In this special hands-on workshop, Dan McGhan takes participants into the use of JavaScript in APEX. 

 

Event Organizer
Oracle ACE Christian Pfundtner
Christian Pfundtner Topic: Oracle Multitenant Database is Inevitable - Let's Go For It! Date: Friday May 17, 2019
8:30am -12:30pm Organization: DBMasters Location: MA01 - Veranstaltungszentrum 
1220 Vienna, Stadlauerstraße 56  Description: This talk starts with a refresher on multitenant architecture and then focuses on the administrative differences compared to the previous architecture. New upgrade options and advantages/disadvantages will also be discussed.

 

Related Content

Latest Blog Posts from Oracle ACEs: March 24-30, 2019

Tue, 2019-04-02 11:05

Doing what they do...

Technical expertise is table stakes for community members who are nominated and confirmed as members of the Oracle ACE Program. But key to that status is their enthusiasm for sharing that expertise through a variety of channels. Blogs, for instance.  Help yourself to some of that expertise with this batch of the latest Oracle ACE blog posts for the week of March 24-30, 2019.

Author Blog Post Oracle ACE Director Franck Pachot
Franck Pachot Oracle ACE Hiroshi Sekiguchi
Hiroshi Sekiguchi Oracle ACE Jhonata Lamim
Jhonata Lamim Oracle ACE Patrick Joliffe
Patrick Joliffe Oracle ACE Rodrigo Radtke de Souza
Rodrigo Radtke de Souza Oracle ACE Scott Wesley
Scott Wesley Oracle ACE Associate Alex Pagliarini
Alex Pagliarini Oracle ACE Associate Bruno Reis da Silva
Bruno Reis da Silva Oracle ACE Associate Emad Al-Mousa
Emad Al-Mousa Oracle ACE Associate Simo Vilmunen
Simo Vilmunen

 

Related Content

Oracle ACE Program: A High-Five for New Members and Category Climbers

Wed, 2019-03-27 13:40

The 25 people featured in this post have a great deal in common. Each has demonstrated substantial technical skill and knowledge about Oracle technologies across a variety of specialties and interests. But beyond that, each has shown considerable enthusiasm for sharing that expertise with the community through articles, presentations, videos, and other means of communication. Those two factors, technical skill and an enthusiasm for sharing it, are what the Oracle ACE Program is all about.

The faces looking up at you from this page belong to the latest crop of experts to earn a place at one of the three levels in that program, having been confirmed in the first quarter of calendar year 2019. Read a bit about them. Reach out to them. They're great resources.

As you head out to conferences or meet-ups over the next several months, the chances are good that you'll see some of these folks. If so, I think a congratulatory high-five is in order.

Well done, people!

 

Oracle ACE Director

 

Ron Ekins
Bolnore Village, West Sussex, England
Twitter LinkedIn 

Ron is a TOGAF-certified Enterprise Architect with over 25 years experience in the design, development, and delivery of large enterprise systems and innovative IT solutions. He first became an Oracle ACE in June 2015, and was promoted to Oracle ACE Director on January 31, 2019.

 

Oracle ACE

 

Oracle ACE Roger Cornejo

Roger Cornejo
Durham, North Carolina
Twitter LinkedIn 

Roger has over 34 years of experience with large/complex Oracle applications (versions 4.1.4 – 18c). His main focus is on DB performance analysis and tuning, and for the past 8 years, diving deep into AWR tuning data. Confirmed as an Oracle ACE on January 30, 2019.

Oracle ACE David Dai

Mingming (David) Dai
Hefei,China
Twitter LinkedIn 

David has been engaged in Oracle Database-related work for 10 years, and has gained extensive experience in high availability, database diagnosis. and performance tuning. He is a core member of ACOUG(All China Oracle User Group) and CN'SOUG (China Southern Oracle User Group ). David first became an Oracle ACE Associate in 2014, and was promoted to Oracle ACE on February 14, 2009.

Oracle ACE Jeffrey Kemp

Jeffery Kemp
Stratton, Australia
Twitter LinkedIn 

Jeffrey is an application designer and developer specializing in Oracle APEX, Oracle SQL, and PL/SQL. He has 19 years experience with the Oracle Database, including 13 years designing, building and hosting APEX applications. Confirmed as an Oracle ACE on February 14, 2019.

Oracle ACE Satoshi Mitani

Satoshi Mitani
Tokyo, Japan
Twitter LinkedIn 

Satoshi has worked at Yahoo! Japan for 14 years, the last 8 years as Database Platform Technical Lead. He has extensive experience with MySQL and is an active member of the MySQL community within the Nippon Association in Japan. Confirmed as an Oracle ACE on February 14, 2019.

Oracle ACE Borys Neselovskyi

Borys Neselovskyi
Dortmund, Germany
Twitter LinkedIn 

Borys Neselovskyi is a leading Infrastructure Architect at OPITZ CONSULTING. His work there includes the conceptual design and implementation of infrastructure solutions based on Oracle Database/Middleware/Engineered Systems/Virtualization. He also regularly works as a trainer for Oracle University. Confirmed as an Oracle ACE on February 14, 2019.

Oracle ACE Yossi Nixon

Yossi Nixon
Ramat HaSharon, Israel
Twitter LinkedIn Oracle ACE

Chief Database Architect at Axxana, Yossi has more that two decades of experience in IT infrastructure management, database design, development, and administration. He became an Oracle ACE Associate in October 2017, and made the jump to ACE on March 19, 2019.

Oracle ACE Stefan Oehrli

Stephan Oehrli
Muri, Switzerland
Twitter LinkedIn 

Stefan is a principal consultant, trainer and partner at Trivadis. He began to work with database systems in the late 1998. His main interests include physical database design, backup and recovery, container technologies, database security, database internals and everything else related to the core Oracle Database technology. Confirmed as an Oracle ACE on February 14, 2019.

Oracle ACE Manish Sharma

Manish Sharma
Dehli, India
Twitter LinkedIn 

Manish, an Oracle certified professional, is an Oracle database trainer and consultant. His Rebellion Rider YouTube channel provides Oracle Database tutorials sto over 58K subscribers. Confirmed as an Oracle ACE on February 1, 2019.

 

Oracle ACE Associate

 

Oracle ACE Associate Flora Barriele

Flora Barriele
Nyon, Switzerland
Twitter LinkedIn 

Flora has been working in IT for 8 years, including 3 years as an Oracle Database Administrator. She now focuses on Multitenant and Exadata Cloud@Customer. She volunteers for Swiss Oracle User Group to organize events, and is involved in promoting and encouraging women in technology. Confirmed as an Oracle ACE Associate on February 14, 2019.

Oracle ACE Associate Lisandro Fernigrini

Lisandro Fernigrini
Santa Fe, Argentina
Twitter LinkedIn 

A Senior Software Developer with more than 15 years of experience in Oracle Database technologies, Lisandro first got involved with Oracle Database as a DBA, then as a PL/SQL Developer, and later as a Database Architect.  He is an active member of AROUG (Argentina Oracle User Group). Confirmed as an Oracle ACE Associate on  January 17, 2019.

Oracle ACE Associate Paolo Gaggia

Paolo Gaggia
Rome, Italy
Twitter LinkedIn 

Paolo has 20 years of experience with Oracle technology, with a focus on Oracle Database architecture and troubleshooting. An expert in Oracle Database and Middleware, he currently develops architecture and solutions based on Oracle Blockchain Cloud. Confirmed as an Oracle ACE Associate on March 20, 2019.

Oracle ACE Associate Caroline Hagemann

Carolin Hagemann
Hamburg, Germany
Twitter XING LinkedIn Oracle ACE Associate Carolin Hagemann

Carolin developed her first Oracle APEX application in 2010 after years of developing web applications with PHP and MySQL. She made the decision to become an APEX consultant after attending the DOAG conference and exhibition. She organizes Meetups in Hamburg and is active in the DOAG NextGen DOAG Development communities. Confirmed as an Oracle ACE Associate on March 11, 2019.

Oracle ACE Associate Bin Hong

Hong Bin
Chengdu, China
  LinkedIn 

With more than 10 years of experience with MySQL, Hong Bin is a technical director for Shanghai Action Information Technology Co. where he specializes in Database Management/Performance. Confirmed as an Oracle ACE Associate on February 15, 2019.

Oracle ACE Associate Firoz Hussain

Firoz Hussain
Ajman, United Arab Emirates
  LinkedIn 

Firoz is a Senior Oracle Apps DBA with the Thumbay Group. His specialties include Database Management and Performance, Application and Apps Technology, and Cloud Computing. Confirmed as an Oracle ACE Associate on February 14, 2019.

Oracle ACE Associate Jian Jiang

Jian Jiang
Ningbo, China
   

In his role as a database administrator with Yunqu Tech, Jian Jiang specializes in database management performance, and is also interested in SQL tuning. Confirmed as an Oracle ACE Associate on February 20, 2019.

Oracle ACE Associate Batmunkh Moltov

Batmunkh Moltov
Ulaanbaatar, Mongolia
Twitter LinkedIn 

An Oracle Certified Master, Batmunkh has over 8 years experience with Unix Systems and Oracle Database, with expertise in Database Management and Performance, Linux, Virtualization, Open Source, and Engineered Systems. Confirmed as an Oracle ACE Associate on February 15, 2019.

Oracle ACE Associate Daniel Nelle Daniel Nelle
Leimersheim, Germany
Twitter LinkedIn 

Since Daniel first started working with Oracle Databases in 2004, databases and IT security have become his core competencies. His focus is drawn to performance tuning and to finding solutions beyond the obvious. Confirmed as an Oracle ACE Associate on February 15, 2019.

Oracle ACE Associate Alex Pagliarini Alex Pagliarini
Rio Grande do Sul, Brazil
Twitter LinkedIn

With expertise in Applications and Apps Technology, MySQL, and Database App Development, Alex has been working professionally with Oracle EBS for 8 years. Confirmed as an Oracle ACE Associate on January 30, 2019.

Oracle ACE Associate Mahmoud Rabie Mahmoud Rabie
Riyadh, Saudi Arabia
  LinkedIn 

Mahmoud is a Senior IT Solution Architect and Senior IT Trainer with over of total 17 years’ experience. An Oracle Database SQL Certified Expert and Sun Certified Java Programmer, his expertise includes database app development, Linux, Virtualization, and Open Source. Confirmed as an Oracle ACE Associate on February 14, 2019.

Oracle ACE Associate Tomito Masahiro Masahiro Tomita
Nagano, Japan
Twitter Oracle ACE Associate

Masahiro works at Fujitsu Cloud Technologies, where he specializes in MySQL, Linux, Virtualization and Open Source. He is a representative of the Japan MySQL User group. Confirmed as an Oracle ACE Associate March 11, 2019.

Oracle ACE Associate Elisa Usai Elisa Usai
Pully, Switzerland
Twitter LinkedIn 

Elisa has  more than 10 years of experience in IT, with expertise that includes MySQL, Oracle technologies, and monitoring solutions. Active in the Oracle community, she is a member of the ITOUG board and regularly speaks at conferences and events. Confirmed as an Oracle ACE Associate on February 15, 2019.

Oracle ACE Associate Simo Vilmunen Simo Vilmunen
Toronto, Canada
Twitter LinkedIn 

Simo, a Technical Architect at Uponor Business Solutions, has worked with Oracle databases since 2000 and with Oracle Applications since 2004. His current focus is on using Oracle Cloud Infrastructure (OCI) functionality to modernize solutions like Oracle Applications by automation, scaling and infrastructure as code. Confirmed as an Oracle ACE Associate on February 15, 2019.

Oracle ACE Associate Shengdong Zhang Shengdong Zhang
Beijing, China
   Oracle ACE Associate

Shengdong Zhang has been working with Oracle database since 2010, and has extensive experience in database backup and recovery, monitoring, troubleshooting,performance tuning and architecture design.  Confirmed as an Oracle ACE Associate on March 20, 2019.

Oracle ACE Associate Chenxi Zhang Chenxi Zhang
Zhejiang, China

Chenxi Zhang is the Technical Manager for a domestic insurance company in China, and he is the co-founder of CN'SOUG (China Southern Oracle User Group), the largest Oracle User Group in southern China. His expertise is in Database Management/Performance, Middleware/SOA, Linux, Virtualization and Open Source. Confirmed as an Oracle ACE Associate on January 7, 2019.

About the Oracle ACE Program

Recognized for their technical expertise, Oracle ACEs contribute knowledge with articles, technical advice, blog posts, presentations, and tweets. Join the community and learn from their insights and experience. Learn more.

Related Resources

 

 

Getting Started With Git On Oracle Cloud

Mon, 2019-03-25 12:47

The new and improved Oracle Marketplace is now available from within the Oracle Cloud Infrastructure console.  The marketplace contains several applications that developers commonly use in their projects; things like source control, bug tracking and CI/CD applications - with more being added all the time.  The best part about the marketplace is that it gives you the ability to launch instances running these tools with one click.  Let's take a look at how to launch one of these instances using something that nearly every software project uses - source control.  More specifically, the current most popular source control system: Git.

To get started with git, head to your Oracle Cloud console and select Marketplace from the left sidebar menu:

From the Marketplace, select 'GitLab CE Certified by Bitnami':

On the following page, click 'Launch Instance':

Choose the image and compartment, review and accept the terms, then click 'Launch Instance':

The next page should look familiar to you if you have previously launched an instance on Oracle Cloud.  Enter your instance name, choose your options related to the instance shape and make necessary networking selections.  Be sure to upload an SSH key, we'll need it later on.  When you're satisfied, click 'Create':

You'll be taken next to the instance details page while the instance is provisioned.  

While the instance provisions, double check that the subnet you have chosen has the proper security and route table rules to allow the instance to be web accessible.  From the sidebar, select 'Networking' then 'Virtual Cloud Networks':

From the Virtual Cloud Networks landing page, select the VCN you chose when creating the network, then from the following page locate the subnet that you chose.  Here you'll be able to navigate directly to the proper rules that you will need to verify or create:

First verify (or create) a route table rule that targets your internet gateway for all incoming traffic:

Then make sure the security list allows ports 80 and 443 for all incoming traffic (please ensure that this subnet is not associated with any instances that you do not want to expose to the web):

By now your GitLab instance should be fully provisioned.  Head to the instance details page (Compute -> Instances in the left sidebar) and view the details for your GitLab instance.  Take note of the public IP address:

Click on 'Console Connections' in the left menu, then 'Create Console Connection' and populate the dialog with the SSH key you used when creating the instance and click 'Create Console Connection':

Now you should be able to hit your running GitLab administrator via your browser at http://<public ip>:

The default username is 'root'.  To find your initial password, SSH into the instance using the following command:

ssh bitnami@<public ip> -i /path/to/ssh_key

The initial password is stored in a file called 'bitnami_credentials'. To view it:

cat ./bitnami_credentials

Which will look similar to:

Log in and get started working with GitLab on Oracle Cloud!

ACE Program Members Deliver Sessions at Collaborate 2019 in San Antonio

Mon, 2019-03-25 12:46

A small army of experts will present more than 1000 sessions at Collaborate 2019, April 7-11, 2019 in San Antonio, TX, (the home of the historic Alamo). As the list below shows, members of the Oracle ACE Program are well represented among those delivering sessions. Each of the listed session titles links to specific time, date, and location information. That should help as you're putting together your agenda for the event.

Collaborate 2019
April 7-11, 2019
Henry B. González Convention Center
San Antonio, TX USA
Information

Presenter Session Date

Oracle ACE Ahmed Aboulnaga
Ahmed Aboulnaga

Extract Partial Data from ASO Cube of Oracle Planning and Budgeting Cloud in a Readable Format 4/10/2019

Oracle ACE Ahmed Alomari
Ahmed Alomari

Taming the OACore JVM 4/10/2019 Applications Database Tuning Panel 4/8/2019

Oracle ACE Director Biju Thomas
Biju Thomas

Let's talk AI, ML, and DL 4/8/2019 Practical Usage of ORAchk and DBSAT for E-Business Suite Applications 4/9/2019 Eighteen (18) Database New Features you must See (c) 4/11/2019

Oracle ACE Bill Dunham
Bill Dunham

Workshop: EBS Upgrades StreetSmarts: A Guide to Executing Oracle EBS 12.2.x Upgrades 4/7/2019 To Cloud or Not to Cloud: That is the Question! 4/8/2019 OAUG Customizations & Alternatives Special Interest Group 4/9/2019 R12.2 Happy Hour - San Antonio Style! 4/9/2019 Flying Right Through the Clouds: Lifting and Shifting Oracle EBS On-Premise to MS Azure Cloud 4/10/2019 Let the Excitement Continue: Meet the New & Modern 12.2 EBS! 4/11/2019

Oracle ACE Chris Couture
Chris Couture

Developing a Cohesive User Experience 4/9/2019 What's Possible with PeopleSoft Chatbots 4/10/2019

Oracle ACE Director Dan Vlamis
Dan Vlamis

Getting from Answers/Dashboards to Data Visualization 4/9/2019 Smart Targeting Consumers: DX Marketing's Autonomous Data Warehousing Future 4/9/2019 Modern Machine Learning with Oracle Analytics Cloud and Autonomous Data Warehouse Cloud 4/10/2019

Oracle ACE Associate Dayalan Punniyamoorthy
Dayalan Punniyamoorthy

Extract “Partial Data” from ASO Cube of Oracle Planning and Budgeting Cloud in a Readable Format 4/7/2019

Oracle ACE Director Francis Mignault
Francis Mignault

What Every DBA Needs to Know About Oracle Application Express 4/8/2019 Oracle Forms and Oracle Application Express: The Odd Couple 4/10/2019 Worlds Collide! APEX and Digital Assistants Revolutionize Your ERP Applications 4/11/2019

Oracle ACE Associate Fred Denis
Fred Denis

Lessons Learned in Exadata Patching (Including 18c and in the Cloud) 4/8/2019 Must-Have Free Scripts When Working With Exadata / GI / ASM / opatch 4/9/2019

Oracle ACE Ilmar Kerm
Ilmar Kerm

Oracle Database Infrastructure as Code with Ansible 4/8/2019 Implementing Incremental Forever Strategy for Oracle Database Backups 4/9/2019

Oracle ACE Director Martin Klier
Martin Klier

YOUR Machine and MY Database - A Performing Relationship!? (2019 edition 4/10/2019 Oracle Core: Database I/O 4/10/2019

Oracle ACE Michael Barone
Michael Barone

OAUG: E-Business Suite Security SIG -- On-Premise and Cloud Security 4/11/2019

Oracle ACE Michael Messina
Michael Messina

MySQL 8 New Features, Updates and Changes 4/9/2019 MySQL Database Security 4/10/2019 The Oracle Database Security Assessment Tool: Know Your Security Risks 4/10/2019 Oracle Database Sharding - Architecture and Concepts 4/10/2019

Oracle ACE Director Osama Mustafa
Osama Mustafa

Best Practices for Virtualizing Oracle RAC with VMware Cloud on AWS 4/8/2019 Using Python With Oracle Database 4/9/2019

Oracle ACE Roger Cornejo
Roger Cornejo

Scale-Up Your Use of the Advisor Framework 4/8/2019 Using the Dynamic Oracle Performance Analytics Framework 4/10/2019

Oracle ACE Director Susan Behn
Susan Behn

Data Security-Wizarding with EBS Security Wizards 4/7/2019 OAF Personalization’s 2019 - Quick Innovation Wins 4/8/2019 Enforcing Business Rules With Approvals Management (AME) in OM, GL, PO, AP and User Management 4/9/2019 Role Based Access Controls – Side by Side Comparison of EBS and Cloud 4/9/2019 RBAC Training - Automated processes for new users and roles with approval processes in AME 4/10/2019

Oracle ACE Tim Warnet
Tim Warner

Closing the Workforce Management Circle – Using PaaS to Extend SaaS 4/10/2019   Other Events Featuring Oracle ACEs

 

About the Oracle ACE Program Recognized for their technical expertise, Oracle ACEs contribute knowledge with articles, technical advice, blog posts, presentations, and tweets. Join the community and learn from their insights and experience. Learn more.

Pages