Framework Grid | Architecture Patterns and Best Practices
see Cloud Native Computing Foundation
General Area | Primary | Public Cloud | Kubernetes | Private Cloud | Alternatives | |
---|---|---|---|---|---|---|
Batch processing | ||||||
CICD | GitHub gitlab dockerhub gocd Jira confluence | https://jenkins-x.io/ | ||||
Development Build | Maven | |||||
Development IDE | Spring STS, IntelliJ, Visual Studio Code XCode | |||||
Development Languages | Java Angular/Typescript Go Swift Python | |||||
Development Libraries | Postman Swagger - now OpenAPI 3 | |||||
Development Runtimes | JVM NodeJS | |||||
Development Specs | Spring, Java EE, JPA, OpenAPI | |||||
Development Tools | Postman 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 Hosted | AWS Azure | VexxHost | ||||
CNI | Flannel, Calico | |||||
Containers | Docker | |||||
Container Registry | Dockerhub Nexus | ECR | Artifactory Quay | |||
Cross Cloud | ARC | |||||
Database Relational | MySQL/MariaDB PostgreSQL | RDS Aurora | MongoDB, | |||
Database key/value |
| |||||
Database NoSQL | DynamoDB Neptune | ArangoDB? | ||||
DNS | CoreDNS, | |||||
IDE | ||||||
Infrastructure | HEAT | Chef Puppet | ||||
Infrastructure Intent | Terraform | CloudFormation ARM | ||||
Key Management | Vault | AWS Secrets Manager | ||||
Kubernetes Deployment and Control Plane | Rancher/RKE/k3s, Kubeadm CloudFoundry OpenShift | EKS, AKS, G | Docker Desktop 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 | |||||
Tracing | OpenTracing | |||||
Virtual Machine (prem) | VMware VirtualBox |
IDEs
Type | Version | Builds | ||
---|---|---|---|---|
Visual Studio | ||||
Visual Studio Code https://marketplace.visualstudio.com/items?itemName=Pivotal.vscode-boot-dev-pack | ||||
Eclipse | ||||
Springsource Tool Suite | 4 | |||
IntelliJ |
Frameworks
Type | Version | ||
---|---|---|---|
Angular/Typescript | |||
EclipseLink | |||
Hibernate | |||
Java SE | 11.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
Rules Engines
Drools
JSR-94
https://www.oracle.com/technetwork/articles/java/javarule-139829.html
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
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
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
App Servers
Spring boot
Start using spring boot via spring.io
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
RKE | Pod Lifecycle | Kubernetes Dashboard |
Switching kubectl contexts - https://kubernetes.io/docs/tasks/access-application-cluster/configure-access-multiple-clusters/
Case Studies
Tinder |
PVC
Clusters / HA
https://kubernetes.io/docs/concepts/cluster-administration/networking/
Monitoring
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/