Top Banner
Copyright © 2018, eProseed and/or its affiliates. All rights reserved. | Confidential LEARNING FROM THE PAST applying best practices to your Oracle JET applications Lonneke Dikmans eProseed Tuesday January 14th nlOUG Meetup Integration and Process SIG 2020
27

Learning from the past - nlOUG

Dec 04, 2021

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Learning from the past - nlOUG

Copyright © 2018, eProseed and/or its affiliates. All rights reserved. | Confidential

LEARNING FROM THE PAST

applying best practices to your Oracle JET applications

Lonneke DikmanseProseedTuesday January 14thnlOUG Meetup Integration and Process SIG 2020

Page 2: Learning from the past - nlOUG

Copyright © 2018, eProseed and/or its affiliates. All rights reserved. | Confidential

Lonneke Dikmans

• Co-CTO & Partner @eProseed

• Oracle Groundbreaker Ambassador & Oracle ACEDirector, working in IT since 1998

• Software developer & architect

• Co-Author of the book SOA Made Simple

About eProseed

• HQ in Luxemburg

• Local offices in several parts of the world

• Award winning Oracle partner

2

Services

• Support services

– Hosting, managed services, concierge services, emergency services

• Consultancy services

– End to End projects, Reviews, Architecture

• Products & Solutions

– FSIP, GDPR

EPROSEED | PARTNER

Page 3: Learning from the past - nlOUG

Copyright © 2018, eProseed and/or its affiliates. All rights reserved. | Confidential

AGENDA

Introduction

Our current SDLC

Our first JET application

Demo

Next Steps

1

2

3

3

4

5

Page 4: Learning from the past - nlOUG

Copyright © 2018, eProseed and/or its affiliates. All rights reserved. | Confidential

INTRODUCTION

4

ADF Faces

ADF BC

Database

SOA/BPM/WCC

OSB

Oracle JET

Kubernetes

Node

Node

jQuery

Knockout

Express

NPM

Require

Grunt

MochaYeoman

Jasmin

Docker

Page 5: Learning from the past - nlOUG

Copyright © 2018, eProseed and/or its affiliates. All rights reserved. | Confidential

AGENDA

Introduction

Our current SDLC

Our first JET application

Lessons learned

Next Steps

1

2

5

3

4

5

Page 6: Learning from the past - nlOUG

Copyright © 2018, eProseed and/or its affiliates. All rights reserved. | Confidential

• Manage collaboration and tasks

• Manage and monitor quality of artefacts

• Create and store artefacts

• Release

• CMDB

• Deploy

6

CURRENT SDLC | TOOLS OVERVIEW

Page 7: Learning from the past - nlOUG

Copyright © 2018, eProseed and/or its affiliates. All rights reserved. | Confidential

CURRENT SDLC | WORKSTATION

7

Developer Workstation

JDeveloper

Maven

Browser

SOAP UI

Selenium

JMeter

SourceTree JDK

Project manager Workstation

Browser

Platform operator

Browser Terminal

Page 8: Learning from the past - nlOUG

Copyright © 2018, eProseed and/or its affiliates. All rights reserved. | Confidential

TOOLING SCOPE & TOPOLOGY

8

Developer Workstation

JDeveloper

Maven (Local)

Code Review

Crucible

SonarQube

Testing

Clover

Repository Management

Nexus

Issue Tracking System

JIRA

Version Control System

Bitbucket

Continuous Integration

Bamboo

External Repositories

Apache Central

Oracle Maven

Application Servers

WeblogicScripts

Collaboration System

Confluence

Page 9: Learning from the past - nlOUG

Copyright © 2018, eProseed and/or its affiliates. All rights reserved. | Confidential

SNAPSHOT LIFECYCLE

9

Repository Management

Sonatype Nexus OSS

Snapshots

Version Control System

Bitbucket

Continuous Integration

Bamboo

Developer Workstation

JDeveloper Workspace

pom.xml(ear)

Project-1

pom.xml

Project-n

pom.xml(jar)

Local Repository Management

Maven

Local Source Code Repository

GITpom.xml

(war)

de

pe

nd

ency

mvn install

mvn package

git commit git push

JIRA Number

dependencies

trigger

mvn install

Application Servers

Weblogic

deploy

Code Review

SonarQube

Page 10: Learning from the past - nlOUG

Copyright © 2018, eProseed and/or its affiliates. All rights reserved. | Confidential

RELEASE LIFECYCLE

10

Assemble Release

POM

Version 2.0.0

Module-xv2.0.0

Module-yv1.4.1

Continuous Integration

Bamboo

Repository Management

Sonatype Nexus OSS

Releases

Application Servers

Weblogic

Version Control System

Bitbucket

Code Review

Crucible

SonarQube

Testing

Clover

1. Initiate Release

2. Testing

3. Code Review

4. Update POMs version

5. Build libs 6. Deploy

7. Branch (major)/Tag (minor) releaser

Excel Spreadsheet

Update Metadata

Module-nvx.y.z

Page 11: Learning from the past - nlOUG

Copyright © 2018, eProseed and/or its affiliates. All rights reserved. | Confidential

AGENDA

Introduction

Our current SDLC

Our JET experience so far

Lessons learned

Next Steps

1

2

11

3

4

5

Page 12: Learning from the past - nlOUG

Copyright © 2018, eProseed and/or its affiliates. All rights reserved. | Confidential

OUR FIRST JET APPLICATION

12

Page 13: Learning from the past - nlOUG

Copyright © 2018, eProseed and/or its affiliates. All rights reserved. | Confidential

FSIP

• Supervision for central banks

• Based on Fusion Middleware in backend

• Browser and mobile

• Users

– Central bank supervisors

Products

• Application to manage products for bus company

• Based on Java in the backend

• Browser and mobile

• Users

– Product manager

– Concession marketeer

– IT

Vaardam | DoeMee App

• Three Apps to support participation

• Based on Node and Blockchain in the backend

• Android, iPhone, Browser

• Users

– Citizens

– Civil servants

JET PROJECTS EPROSEED

13

Page 14: Learning from the past - nlOUG

Copyright © 2018, eProseed and/or its affiliates. All rights reserved. | Confidential

EXAMPLES

14

Page 15: Learning from the past - nlOUG

Copyright © 2018, eProseed and/or its affiliates. All rights reserved. | Confidential

DEMO

• DoeMee

• Docker build in DevCS

15

Page 16: Learning from the past - nlOUG

Copyright © 2018, eProseed and/or its affiliates. All rights reserved. | Confidential

AGENDA

Introduction

Our current SDLC

Our first JET application

Lessons learned

Next Steps

1

2

16

3

4

5

Page 17: Learning from the past - nlOUG

Copyright © 2018, eProseed and/or its affiliates. All rights reserved. | Confidential

CoE best practices

Project three

Project four

Project two

17

PRACTICES

First project: deployment on Application Server, trial and error, manual testing, manual deployment

Second project: deployment on Application Server, cookbook, manual testing, manual deployment

Third project: deployment in Docker (node),cookbook, automated testing, automated deployment

Fourth project: deployment using Kubernetes, cookbook, automated testing, automated deployment

ProjectOne

Page 18: Learning from the past - nlOUG

Copyright © 2018, eProseed and/or its affiliates. All rights reserved. | Confidential

Coding

• Java ≈Javascript ? Java ≠ Javascript!

• Events, functions, weak typing

• IDE support

Deployment

• Docker/NGNIX (Kubernetes)

• Using Jenkins / DevCS

18

Testing

• Unit testing, automated testing

• Browser caching

• Browser versions, OS (iOS ≠ MacOS)

Pace of change

• New versions of JET

• New features

LESSONS LEARNED

Page 19: Learning from the past - nlOUG

Copyright © 2018, eProseed and/or its affiliates. All rights reserved. | Confidential

AGENDA

Introduction

Our current SDLC

Our first JET application

Lessons learned

Next Steps

1

2

19

3

4

5

Page 20: Learning from the past - nlOUG

Copyright © 2018, eProseed and/or its affiliates. All rights reserved. | Confidential

NEXT STEPS

• Setup our SDLC for Javascript

– Use Jenkins and DevCS in combination with Docker and optionally Kubernetes

– Client side (JET): create application, develop, ,deploy, test, run

– Server side (Node.js): create application, develop, test, deploy, run

• Create a new cookbook

– Programming best practices for Javascript

– Setup a server side application

– Setup a client side application

• Select unit testing framework (QUnit versus Jasmin)

• Decide on IDE (Visual Studio)

20

Page 21: Learning from the past - nlOUG

Copyright © 2018, eProseed and/or its affiliates. All rights reserved. | Confidential

CURRENT SDLC | TOOLS OVERVIEW

21

Page 22: Learning from the past - nlOUG

Copyright © 2018, eProseed and/or its affiliates. All rights reserved. | Confidential

JAVASCRIPT SDLC | WORKSTATION

22

Developer Workstation

JDeveloper

Maven

Browser

SOAP UI

Selenium

JMeter

SourceTree JDK

Project manager Workstation

Browser

Platform operator

Browser Terminal

Netbeans ?? Postman

NPM, Grunt, OjetCli

?

?

Page 23: Learning from the past - nlOUG

Copyright © 2018, eProseed and/or its affiliates. All rights reserved. | Confidential

TOOLING SCOPE & TOPOLOGY

23

Developer Workstation

Netbeans

NPM install

Code Review

Crucible

SonarQube

Testing

MochaSelenium

Repository Management

OCI-R

Issue Tracking System

JIRA

Version Control System

Bitbucket

Continuous Integration

Jenkins/DevCS

External Repositories

NPM

NPM

Containers

NGINXScripts

Collaboration System

Confluence

Node

Nexus

Page 24: Learning from the past - nlOUG

Copyright © 2018, eProseed and/or its affiliates. All rights reserved. | Confidential

SNAPSHOT LIFECYCLE

24

Repository Management

Nexus / OCI-R

Snapshots

Version Control System

Bitbucket

Continuous Integration

Jenkins/Dev CS

Developer Workstation

Netbeans Project

Project-1

Package.json

Project-n

Local Repository Management

NPM

Local Source Code Repository

GITPackage.json

de

pe

nd

ency

mvn install

mvn package

git commit git push

JIRA Number

dependencies

trigger

mvn install

Containers

Node/NGINX

deploy

Code Review

SonarQube

Page 25: Learning from the past - nlOUG

Copyright © 2018, eProseed and/or its affiliates. All rights reserved. | Confidential

RELEASE LIFECYCLE

25

Assemble Release

package.json

Version 2.0.0

Module-xv2.0.0

Module-yv1.4.1

Continuous Integration

Jenkins/DevCS

Repository Management

OCI-R, Nexus

Releases

Containers

NGINX/Node

Version Control System

Bitbucket

Code Review

Crucible

SonarQube

Testing

Qunit, Mocha, Jasmin

1. Initiate Release

2. Testing

3. Code Review

4. Update POMs version

5. Build libs 6. Deploy

7. Branch (major)/Tag (minor) releaser

Module-nvx.y.z

Page 26: Learning from the past - nlOUG

Copyright © 2018, eProseed and/or its affiliates. All rights reserved. | Confidential

SUMMARY OF TOOLS

Tool JEE Frontend backend

Unit testing Junit Qunit, Jasmin Mocha

Packaging Maven (Docker) Grunt, ojet (Docker) NPM (Docker)

Repository Nexus Nexus, OCI-R Nexus, OCI-R

Version Control Git Git Git

Continuous integration Jenkins Jenkins/DevCS Jenkins/DevCS

Quality Control SonarQube SonarQube SonarQube

Testing Selenium/SOAP Selenium Postman

26

Page 27: Learning from the past - nlOUG

Copyright © 2018, eProseed and/or its affiliates. All rights reserved. | Confidential

CONCLUSION

• We are getting as mature as in our Java practice

• Big focus on getting there

– Combining experience from several projects

– Following Oracle best practices

– Discussions internally

• Need to add VBCS!

• Happy coding ☺

27