Both Sides Now: DevOps and Agile in Oracle Developer Cloud Service for Fusion Middleware Developers
Peter KoletzkeTechnical Director & Principal Instructor
2
Survey• Job function
– DBA, developer, both, other
• Languages– JavaScript, Java, APEX, other PL/SQL
• Agile approach to methodology
• Using DevOps
• Using cloud?– Oracle PaaS
– Oracle IaaS
– Other vendor’s cloud
3
Both Sides Now
I've looked at clouds from both sides now
From up and down and still somehowIt's cloud illusions I recall.
I really don't know clouds at all—Joni Mitchell
4
Reason for This Session
• Confluence of two events1. Experience reinstallation of CVS (version control
software) at client site• Procurement, installation, configuration, local developer installs
and documentation, repository migration, support cases
2. Oracle Developer Cloud Service Hands-on Lab• At Oracle OpenWorld 2016
• Example of agile development of a Java application
5
Agenda
Slides will be available on the RMOUG website.
• Intro to DevOps, Agile, and DevCS
• DevCS and FMW
• Both sides now
6
Winner of 2017 Preakness Stakes
Cloud Computing13 to 1 odds
7
Promises of Cloud Computing• Scalability
– As your needs grow, you just increase service level• Classic example: website traffic from Super Bowl ads
• No extra resources needed on your side
• Reduction or elimination of onsite (“on prem”) infrastructure – Can you say “time-share” and “mainframe?”
• Someone else worries about compatibility, backup and recovery, upgrades
• Client access is “easy” and ubiquitous
8
Cloud Computing Concerns
• Security– Data– Accounts– Systems
• Loss of control, reliability of the internet and the vendor– Downtime
• Complexity, learning curve• Cost• Why change?
– The “earth-based” solution works fine.
9
On the Other Hand…
• Supporting the development life cycle can be challenging; example: CVS reinstall
• Many products to purchase/acquire, install, configure, train on
• Project tracking, file and information sharing (wikis)• Source code control system
– Software configuration management (SCM), file versioning
• Code review system• Testing system• Issue reporting system• Continuous integration (CI) – for example, nightly builds• Deployment tools
10
Cloud Computing Can Help• Oracle’s offering: Oracle Developer Cloud Service
– Free with a cloud account, also included with PaaS:
– Integrated DevOps environment supports agiledevelopment methodology
• Oracle Java Cloud Service
• Oracle Java Cloud Service-SaaS Extension
• Oracle Messaging Cloud Service
• Oracle Mobile Cloud Service
• Oracle SOA Cloud Service
• Oracle Application Container Cloud
• Oracle Container Cloud
• Oracle Database Cloud Service
• Oracle Application Builder Cloud Service
• Oracle Metered Compute
11
About Agile
• Tasks divided into “sprints” – A release with short development cycle like 2 weeks
– Progress of sprints is tracked in scrum boards
• Agile approach led to need for DevOps
…an approach to software development under which requirements and solutions evolve through the collaborative effort of self-organizing cross-functional teams and their customer(s)/end users(s). It advocates adaptive planning,
evolutionary development, early delivery, and continuous improvement, and it encourages rapid and flexible response to change. https://en.wikipedia.org/wiki/Agile_software_development
12
About DevOps• One definition:
• Merge of Software Development/Operations – Dev = development (analysis, design,
develop, test)– Ops = operations (deploy, monitor)
• Objective: faster delivery of application software solutions – Example: supporting agile sprints
• Phases (from Wikipedia)
DevOps is the practice of operations and development engineers participating together in the entire service
lifecycle, from design through the development process to production support.
https://theagileadmin.com/what-is-devops/
13
More About DevOps
• Uses multiple tools– Development: code reviews, version control, bug tracking
– Continuous integration: frequent builds from version control• Grady Booch (UML “Gang of Three”) concept from 1991
• Popular products: Hudson (now Oracle’s), Jenkins (open source)– Hudson executes Maven, Ant, shell script, or Windows batch projects
– Continuous testing: automated tests
14
About Oracle Developer Cloud Service• A.k.a., “DevCS”
• A DevOps tool (“more than half of DevOps”)– Manage agile sprints
– Continuous anything: integration, test, build
• Supports multiple code disciplines– Java, JavaScript, PL/SQL (APEX, SQL)
– Others
• Can assist with project activities– Your choice – all or some
– Email notifications assist the work flow
15
DevCS Assists These Activities• Plan and manage
– Issue tracking, team management, agile dashboard
• Code– Version management, code review, track changes
• Build and deliver– Continuous integration, orchestration, deployment
automation, Docker support
• Team collaboration– Activity stream, wiki, web dashboard
16
Getting Started• Obtain trial account
– 300 USD credits or 30 days (whichever comes first)
• Welcome email with links to various services will arrive– Might take 2.5 weeks – ordering ABCS may be faster
• A “Core Technology Strategist” may call to find out if you need support
• Sign out page– Conserve those trial credits
– Click “Ok” on the confirmation page
17
Find “Standard Developer Service” URLIn the Welcome email
Login details also in the Welcome email
18
DevCS Console
Project PageMenu
Activities / News
Search
Repositories
See Appendix A for screenshots of
tools’ pages.
20
Agenda
• Intro to DevOps, Agile, and DevCS
• DevCS and FMW
• Both sides now
21
Sample Uses
• JavaScript – JET, MAX
• Java– ADF applications
– JSP, etc.
• SQL and PL/SQL code– Database objects
– APEX Earlier today: Shay Smeltzer
Agile Methodology and DevOps for Database Developers and Admins
22
Development IDE Plugins• DevCS “Team” support
– Eclipse • Oracle Cloud Tools plugin (OEPE includes this)
– NetBeans • DevCS plugin
• JavaScript, Java, HTML5, PHP, C/C++
– JDeveloper (12.2.1 contains the plugin)
• DevCS repository support– SQL Developer
– Any tool with Git connectivitySee Appendix B for some screenshots of JDeveloper’s DevCS team support.
23
DevCS Workflow Example - Setup
Harry
Sally
JDev
DevCS
JDev
DevCS
Create application
Create project
Add tasks issues, features
Monitor progress
Create project repository
Commit to local Git
Push to DevCS Git
Set up Team Server
24
DevCS Workflow Example – Part 1
Harry
Sally
JDev
DevCS
JDev
DevCS
Set up agile sprint Assign issues
Get code from Git repository
View issues
Create branch
Complete tasks
Finish coding
Mark tasks as completed
Wait for notification
Unit test code changes
Commit to local Git
Push to DevCS Git
Create merge request
25
DevCS Workflow Example – Part 2
Harry
Sally
JDev
DevCS
JDev
DevCS
Reject merge request
Fix code Test, commit, push
Approve merge request
Merge and delete branch Build
See Appendix C for screenshots of Build process.
26
Demo Summary• Cloud code repository
– Clone into local Git, work within IDE, commit, push
• Cloud Agile sprint– Load tasks into sprint
– Assign tasks to developers
– Merge requests
• Team support in IDE– Team Server setup
– Task management
– Dashboard
27
… And Without the Plugin?• Still can run Git functions in your IDE
– Use DevCS Git repository as target/source
– Clone, add, commit, branch, check out, push
• Perform project functions in the web console– Dashboard
– Tasks and issues
– Builds
28
Agenda
• Intro to DevOps, Agile, and DevCS
• DevCS and FMW
• Both sides now
29
From Up• DevCS = Solid features
– “Free” – with a cloud account, included with PaaS
– No software installation!• Nearly instantaneous environment setup
– Feature-rich, “limitless” variety in development flows• Team-oriented – high degree of project sharing
– Flexible – different types of code• Java, JavaScript, SQL and PL/SQL
– Plugins for multiple IDEs • Eclipse, NetBeans, JDeveloper, SQL Developer
30
More Up• Handles much of DevOps process
– Security for development code • Team member management and project assignments
• Project planning, metrics for progress tracking
– Code versioning, revision control (Git)
– Continuous integration (Maven)
– Build integration (Hudson)
– Continuous deployment to public cloud • Java CS, App Container CS, Docker
31
Still More Up• Wikis
– Organize project information – requirements, specifications
• Code review and approval
• Code test tracking, issue tracking
• Project templates – code and documentation
• Agile methodology support – Promise of faster delivery, more accurate system
32
And Down• Need to license Oracle PaaS
• May cause you to re-examine your development methodology– Or not
• Your existing methodology may not benefit from cloud– Small shop, no cloud products
– Only interested in source code control
• You may be better with “roll your own”
33
When to “Roll Your Own”• Overhead of DevOps (cost, learning curve, training)
may not provide an advantage– Manual steps may be quicker and more productive
– Use a test cloud account to try this
• You can work with part manual/part automated– You stitch together the automated parts, Jenkins perhaps,
Subversion or Git
– Cost, learning curve, training may be worse than cloud
• You are doing very well now, thank you– There is no room for improvement
34
When to Think About DevOps/DevCS
• Worth a serious test drive if:– … you have PaaS now, you have DevCS
– … you are using or want to use the agile approach to development methodology• Get a test account and try the agile features
• Be sure to allow time for activation (order ABCS?)
• Tutorials let you “try before you buy”
• Worth using if:– … you have PaaS and need one feature at least (SCM, wiki)
– … you do agile work but need automated assistance
35
DevOps Resources• Best practices
– https://techbeacon.com/dos-donts-9-effective-best-practices-devops-cloud
• Intro to DevOps– https://aws.amazon.com/devops/what-is-devops/
• DevOps and cloud– https://techbeacon.com/devops-dictates-new-approach-cloud-
development
• Agile– http://www.101ways.com/what-is-agile-10-key-
principles/
36
DevCS Resources• Home
– https://cloud.oracle.com/developer_service– Sign up for a trial account– “Learn More” tab: tutorials, demos, FAQs, white papers
• Get Started– http://docs.oracle.com/cloud/latest/devcs_common
• Docs– https://docs.oracle.com/en/cloud/paas/developer-cloud/csdcs/oracle-
developer-cloud-service.html
• More Tutorials– http://docs.oracle.com/en/cloud/paas/developer-cloud/tutorials.html
37
More DevCS Resources• Shay Shmeltzer’s blog – info and demos
– Director of Product Management for Oracle's Cloud Development Tools
– https://blogs.oracle.com/shay
• W Brian Leonard’s blog– https://wbrianleonard.wordpress.com/
• Community forum– https://community.oracle.com/community/cloud_computing/
platform-as-a-service-paas/oracle-developer-cloud-service
38
DevCS/FMW Resources• Dale Singleterry YouTube video
– Developer Cloud Service: Develop, Collaborate & Deploy in the Cloud
– https://www.youtube.com/watch?v=XaB6TGWVghs
– Older version, but includes examples of how Oracle uses DevCS to build DevCS (145 developers in 2015)
• Shay’s blog (quoted before)– For example:
• https://blogs.oracle.com/shay/agile-development-with-oracle-developer-cloud-service-and-jdeveloper-1221
39
Summary• Agile methodology can speed up software delivery
• DevOps assists agile methodology
• Cloud can automate DevOps
• Oracle Developer Cloud Service is an option for DevOps
• DevCS supports different types of code: SQL, PL/SQL, JavaScript, Java
• If you have PaaS, do a test drive
• If you need or have agile, do a test drive
• You may not need agile or DevOps
40
DesignerHandbookDesigner
Handbook
DeveloperAdvancedForms &Reports
DeveloperAdvancedForms &Reports
JDeveloper 3Handbook
JDeveloper 3Handbook
ORACLE9iJDeveloperHandbook
ORACLEJDeveloper 10g
Handbook
• Please fill out the session evaluation
• 7 of 8 books co-authored with Dr. Paul Dorsey, Avrom Roy-Faderman, & Duncan Mills
• Slides will be available on the RMOUG website
55
Appendix B: JDeveloper’sDevCS Tools
56
DevCS in JDeveloper• Create a Team Server
• Log in
First part of project’s URL
57
DevCS in JDeveloper• Select the Git repository
• Get sources from Developer server
58
DevCS in JDeveloper• Clone from Git
59
DevCS in JDeveloper• Push app files to the repository
– Copy the files into the folder associated with the repository
– Git – Add All
60
DevCS in JDeveloper
• Git - Commit All
61
DevCS in JDeveloper• Git – Push
– Can specify SSH if needed
• Push status
62
DevCS – ADF Activity• In DevCS news/activities
63
DevCS in JDeveloper• Add Ant buildfiles
– New Ant buildfile from the New gallery
– Set up build.xml and build.properties to use DevCS• See sample code in tutorial
– Git – Add All
– Git – Commit All, Git - Push
64
DevCS Build• Configure DevCS project to
use Ant for build
• Build – New Job
• Specify JDK
67
Build 3• Build Steps –
Add Build Step –Invoke Ant
• Targets, – Target as “deploy”
• Already in build.xml
– Path to the build.xml
68
Build 4• Post Build – files to archive
• Build now