brown firewood

Fun with Go Functions: Flexible Oracle Functions Logging to Syslog

Oracle recently added a new logging service to their offering. This logging service supports both custom and service logs. The former is your classic “agent-sends-log-to-logserver” type of log service. The latter will finally give access to logs coming from services such as Load Balancers, API Gateways, Events or Functions. While i really have missed this for most of the services, there still are some situations where i prefer the smooth experience tools like papertrail offer. Especially the immediate visibility of log entries make life so much easier when trying to debug a serverless function that gets triggered by cloud events. Read more…

Working with public/private/hybrid DNS in Oracle OCI

Interestingly, one of my posts on this blog getting most attention is covering the use of dnsmasq for using hybrid DNS on OCI. Since there is quite a lot of interesting things around DNS on OCI, i decided to prepare another post, giving some overview and then show approaches for using private and hybrid DNS. DNS in Oracle OCI – Concepts By default, DNS is pretty simple in OCI. If you try to reach an internal host using a name following the schema of host.subnet.vcn.oraclevcn.com in your current VCN, a VCN resolver will return an answer containing a private IP Read more…

photography of man repairing electrical wires

A Terraform Module for Setup of OCI-Azure Interconnect

Just this week I published a Terraform module for setting up an OCI-Azure interconnect. This basically is the code I already provided earlier and described in a few of my older posts. What you will get The module will create a few resources on Azure and OCI to set up the interconnect. These resources are highlighted in blue in the following diagram. In detail, the module will create in OCI DRG FastConnect Virtual Circuit Interconnect Route Table Service Gateway (optional) Service Gateway Route Table (optional) in Azure Gateway Subnet Express Route Circuit Virtual Network Gateway (including a public ip) What Read more…

man wearing black crew neck

Keeping Oracle Serverless Functions warm with a poor man’s Cron

Oracle Functions suffer from one of the minor issues of having a container based platform that will spin down the container after some time of running idle. The next time the function is called, the container will be spun up again, taking some seconds time to do so. This is absolutely fine if you do not rely on the function being available immediately for some synchronous transaction, e.g. if used in frontends accessed by users. One common approach to keep a function “warm” is to have a time-based trigger calling the function every few minutes. Now in OCI there are Read more…

two brown mice

Fun with Functions – OCI Serverless Part 2: Go Functions and Events

This is the second part of my series covering aspects of Oracle Functions. To get an understanding of the environment we are working in, i recommend reading part 1 first if you haven’t done so already. In this post i will cover a simple serverless function written in Go that generates thumbnails from images uploaded to an object storage bucket. We will use cloud events to trigger the execution of the function. Before proceeding with the hands-on example, you should have the following setup ready as described in part 1: Environment variables TF_VAR_oci_compartment_ocid, TF_VAR_oci_region set (use your env.sh in infrastructure Read more…

Simple Hosting of Static Web Content on Oracle Cloud OCI

Sometimes you just want to get a simple, static website up and running without much hassle. Be it the microsite to tell about your latest achievements or some error page explaining why your whole production site went down. So it’s about firing up your favourite editor, write some html and upload it to a web host. If you do not have any web host running for this purpose, but have access to your Oracle Cloud account, then i will show you a really simple solution for this. Object Storage to the Rescue The easiest way to serve static content is Read more…

architecture buildings construction site excavator

Fun with Functions – OCI Serverless Part 1: Environment Setup

I’ve been pretty busy lately, doing certifications for OCI and Azure and having to deal with daily business, so there was no post on this blog for quite some time. As you might have guessed, i had as well spent some time digging into the Oracle serverless offering which is based on open source project fnproject.io. So i think i now got some interesting things that i will describe in a few blog posts. So let us start from the beginning: When talking about serverless, we usually speak of functions as a service, i.e. small applications that are hosted on Read more…

young woman rolling dough for baking in kitchen

Runtime version problems when building fnproject functions? Just roll your own images then.

When playing around with Oracle Functions and fnproject i pretty soon encountered some build problems for my function written in Go. It simply didn’t play well with some newer Go modules i was using. To understand what was happening here, you need to understand how serverless functions in fnproject are built and deployed. Basically you get docker images used for the build step and for the deployment. So you might have a larger docker image containing all your build tools and a smaller docker image that is actually run on the serverless runtime. Out of the box fnproject uses its Read more…