Page tree

Michael O'Brien

Skip to end of metadata
Go to start of metadata

Framework Grid | Architecture Patterns and Best Practices

General AreaPrimaryPublic Cloud  Kubernetes Private CloudAlternatives

Batch processing







 CICD GitHub gitlab dockerhub gocd Jira confluence
https://jenkins-x.io/




Development BuildMaven




 Development IDE Spring STS, IntelliJ, Visual Studio Code XCode




 Development Languages Java Angular/Typescript Go Swift Python




 Development Libraries Postman Swagger




Development RuntimesJVM NodeJS




 Development Specs Spring, Java EE, JPA, OpenAPI




 Development ToolsPostman Swagger




 Infrastructure

Kubernetes Terraform

 AWS CloudFormation Azure ARM GCD

Openshift Ansible Chef Puppet
 Messaging

 ActiveMQ

 SQS



 Monitoring Prometheus Grafana ELK


 openTracing Fluentd

zabbix, thanos, open metrics, nagios, cortex


 Scheduling/Deployment












 Specific Area





API Gateways

Ingres Controller
3scale?
Application Servers
 Beanstalk



Cloud HostedAWS Azure

VexxHost




CNI
 Flannel, Calico










Containers Docker




Container RegistryDockerhub NexusECR

Artifactory Quay
Cross Cloud
ARC



Database Relational

 MySQL/MariaDB PostgreSQL

RDS Aurora


 MongoDB,







Database key/value

 






Database NoSQL

DynamoDB Neptune

 ArangoDB?


DNS
 CoreDNS,



IDE





InfrastructureHEAT


Chef Puppet
Infrastructure IntentTerraformCloudFormation ARM



Key ManagementVaultAWS Secrets Manager




Kubernetes Deployment Rancher/RKE/k3s, Kubeadm CloudFoundry OpenShift EKS, AKS, G

Docker Desktop

minikube

kubespray

gardener

Mesos
Language Java


 Python, Go, Typescript, ObjectiveC
Load Balancers





Low Code





PaaS
Elastic Beanstalk


CloudFoundry Application Runtime


File, Storage Class
 EBS, EFS, S3

crushftp?
Security





 Servlerless
 Lambda



Source Control
AWS XRay



TracingOpenTracing




Virtual Machine (prem)VMware VirtualBox






IDEs

Frameworks


TypeVersion

Angular/Typescript


EclipseLink


Hibernate


Java SE11.0.5





Terraform

Servers


Developer

Eclipse


IntelliJ

https://www.jetbrains.com/help/idea/remote-debugging.html

API

Swagger


Front End

Angular

Angular and Typescript Developer Guide

Node.js

https://blog.sourcerer.io/why-is-a-java-guy-so-excited-about-node-js-and-javascript-7cfc423efb44

ReactJS

https://docs.spring.io/spring-framework/docs/5.0.0.M1/spring-framework-reference/html/web-reactive.html

Rules Engines

Drools

JSR-94

https://www.oracle.com/technetwork/articles/java/javarule-139829.html

https://www.drools.org/

https://github.com/kiegroup/droolsjbpm-build-bootstrap/blob/master/README.md

https://en.wikipedia.org/wiki/Drools

Requires Maven 3.6+

Microsoft Biztalk

https://en.wikipedia.org/wiki/Microsoft_BizTalk_Server

Integration

LDAP

LDAP

Databases

Relational

JPA

Queues

Kafka

https://kafka.apache.org/intro

Asynchronous Messaging using Kafka

IBM MQ

https://en.wikipedia.org/wiki/IBM_MQ

Load Balancers

https://www.loggly.com/blog/benchmarking-5-popular-load-balancers-nginx-haproxy-envoy-traefik-and-alb/

Session Replication

https://pivotal.io/pivotal-cloud-cache

CRM

Siebel

https://docs.oracle.com/cd/E63029_01/books/PDF/ToolsDevRef.pdf

DevOps

Cloud Native

CloudFormation


Terraform

Terraform Developer Guide

App Servers

Spring boot

Start using spring boot via spring.io

https://docs.spring.io/spring-framework/docs/5.0.0.M1/spring-framework-reference/html/web-reactive.html

Tomcat

Containers

Helm

Helm hooks https://helm.sh/docs/using_helm/#quickstart-guide

dependencies etc - https://helm.sh/docs/developing_charts/

Storage

https://github.com/helm/charts/tree/master/stable/nfs-server-provisioner

Chart Storage

Kubernetes


RKEPod Lifecycle | Kubernetes Dashboard


Switching kubectl contexts - https://kubernetes.io/docs/tasks/access-application-cluster/configure-access-multiple-clusters/

Case Studies

Tinder

PVC

https://kubernetes.io/docs/tasks/configure-pod-container/configure-persistent-volume-storage/#create-a-persistentvolumeclaim

Clusters / HA

https://kubernetes.io/docs/concepts/cluster-administration/networking/


Monitoring

https://resources.coreos.com/youtube-coreos-fest-2017/end-to-end-monitoring-with-the-prometheus-operator

Container Repo

Nexus3


Source Control

Bitbucket, github, gitlab, AWS CodeCommit or your own gerrit container https://hub.docker.com/r/gerritcodereview/gerrit.

Wiki

Use a full confluence server as a service or locally.  Or the minimal wiki functionality of github or gitlab - DevOps#ConfluenceonAWSEC2Linux

JIRA

Use Atlassian JIRA - DevOps#JiraServeronAWSEC2Linux

CI/CD

Canadian Digital Service uses Circle CI.  I use jenkins with plugins and in the past Bamboo.

Jenkins

http://jenkins.obrienlabs.cloud/

Add the ssh and ELK plugins to be able to control CD servers and report results.

Jenkins Docker Installation

Install docker via my https://git.onap.org/oom/tree/kubernetes/contrib/tools/rke/rke_setup.sh#n221

# on ubuntu 18.04 VM
sudo useradd --home-dir /home/jenkins --create-home --shell /bin/bash jenkins
sudo passwd jenkins
# a**
awk -F: '/\/home/ {printf "%s:%s\n",$1,$3}' /etc/passwd
curl https://releases.rancher.com/install-docker/18.06.sh | sh
sudo usermod -aG docker ubuntu
# will automatically create a docker volume
sudo docker run -u 1001 -d --name jenkins -p 80:8080 -p 50000:50000  -it -v /home/jenkins:/var/jenkins_home  jenkins/jenkins:lts

# verify
# http://jenkins
ubuntu@ip-172-31-17-249:~$ sudo docker exec -it jenkins bash
I have no name!@c16f82f35fde:/$ cat /var/jenkins_home/secrets/initialAdminPassword
0******9

# backup
sudo docker cp jenkins:/var/jenkins_home backup

# add ssh and elk plugins
https://wiki.jenkins.io/display/JENKINS/Publish+Over+SSH+Plugin

Jenkins Docker Maven Configuration

mvn needs to be configured before you can run a build job.

Caused: java.io.IOException: Cannot run program "mvn" (in directory "/var/jenkins_home/workspace/difference-cloud-java-snapshot"): error=2, No such file or directory

Solution: 

http://jenkins.obrienlabs.cloud/configureTools/

install maven configuration

recreate as maven project

set git repo, mvn pom.xml target and poll frequency as H/2 * * * *

http://jenkins.obrienlabs.cloud/job/difference-cloud-mvn-java-snapshot/2/console

Jenkins Helm Chart Installation

Gitlab

CNI


Canal

DNS


coreDNS


Azure Devops

https://azure.microsoft.com/en-us/services/devops/?nav=min 

https://visualstudio.microsoft.com/team-services/tfs-pricing/


Zabbix

OPS

https://en.wikipedia.org/wiki/Rsync


Security

MFA - one time

Token - one time

Password Encrypted ZIP

Password Decrypt 9.3 for pp7m files https://www.entrust.com/epd/?_ga=2.217794774.1367341550.1564075828-1268601670.1564075828

Reactive Streams

 https://github.com/reactive-streams/reactive-streams-jvm#reactive-streams used in https://docs.spring.io/spring-framework/docs/5.0.0.M1/spring-framework-reference/html/web-reactive.html and how they work with Angular or ReactJS.

https://www.reactive-streams.org/


















  • No labels