Both Sides Now: DevOps and Agile in Oracle Developer Cloud Service for Fusion Middleware Developers Peter Koletzke Technical Director & Principal Instructor Job function DBA, developer, both, other Languages Survey JavaScript, Java, APEX, other PL/SQL Agile approach to methodology Using DevOps Using cloud? Oracle PaaS Oracle IaaS Other vendor s cloud 2
Both Sides Now I've looked at clouds from both sides now From up and down and still somehow It's cloud illusions I recall. I really don't know clouds at all Joni Mitchell 3 Reason for This Session Confluence of two events 1. 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 4
Agenda Intro to DevOps, Agile, and DevCS DevCS and FMW Both sides now Slides will be available on the RMOUG website. 5 Winner of 2017 Preakness Stakes Cloud Computing 13 to 1 odds 6
Scalability Promises of Cloud Computing 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 7 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. 8
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 9 Cloud Computing Can Help Oracle s offering: Oracle Developer Cloud Service Free with a cloud account, also included with PaaS: 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 Integrated DevOps environment supports agile development methodology 10
About Agile 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 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 11 About DevOps One definition: 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. 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) https://theagileadmin.com/what-is-devops/ 12
Uses multiple tools More About DevOps 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 13 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 14
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 15 Obtain trial account Getting Started 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 16
Find Standard Developer Service URL In the Welcome email Login details also in the Welcome email 17 DevCS Console 18
Menu Project Page Search Repositories Activities / News See Appendix A for screenshots of tools pages. Agenda Intro to DevOps, Agile, and DevCS DevCS and FMW Both sides now 20
JavaScript JET, MAX Java ADF applications JSP, etc. SQL and PL/SQL code Sample Uses Database objects APEX Earlier today: Shay Smeltzer Agile Methodology and DevOps for Database Developers and Admins 21 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 connectivity See Appendix B for some screenshots of JDeveloper s DevCS team support. 22
DevCS Workflow Example - Setup JDev Create application Commit to local Git Push to DevCS Git Sally DevCS Create project Create project repository Add tasks issues, features Monitor progress Harry JDev DevCS Set up Team Server 23 DevCS Workflow Example Part 1 JDev Sally DevCS Set up agile sprint Assign issues Wait for notification Get code from Git repository View issues Create branch Complete tasks JDev Harry Finish coding Unit test code changes Mark tasks as completed Commit to local Git Push to DevCS Git DevCS Create merge request 24
DevCS Workflow Example Part 2 JDev Sally DevCS Reject merge request Approve merge request Merge and delete branch Build JDev Fix code Test, commit, push Harry DevCS See Appendix C for screenshots of Build process. 25 Cloud code repository Demo Summary 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 26
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 27 Agenda Intro to DevOps, Agile, and DevCS DevCS and FMW Both sides now 28
DevCS = Solid features From Up 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 29 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 30
Wikis Still More Up 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 31 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 32
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 33 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 34
DevOps Resources Best practices https://techbeacon.com/dos-donts-9-effective-best-practicesdevops-cloud Intro to DevOps https://aws.amazon.com/devops/what-is-devops/ DevOps and cloud https://techbeacon.com/devops-dictates-new-approach-clouddevelopment Agile http://www.101ways.com/what-is-agile-10-keyprinciples/ 35 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/oracledeveloper-cloud-service.html More Tutorials http://docs.oracle.com/en/cloud/paas/developer-cloud/tutorials.html 36
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 37 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-oracledeveloper-cloud-service-and-jdeveloper-1221 38
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 39 Designer Handbook Developer Advanced Forms & Reports JDeveloper 3 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 ORACLE9i JDeveloper Handbook ORACLE JDeveloper 10g Handbook 40
Appendix A: Project Console Tools 41 Code 42
Source Code and Commiters 43 Maven Repositories 44
Releases 45 Snippets 46
Merge Requests Code reviews 47 Track Issues 48
Agile 49 Builds Project build jobs 50
Deploy 51 Docker Registry 52
Wiki 53 Administration - Administration 54
Appendix B: JDeveloper s DevCS Tools 55 Create a Team Server DevCS in JDeveloper First part of project s URL Log in 56
Select the Git repository DevCS in JDeveloper Get sources from Developer server 57 Clone from Git DevCS in JDeveloper 58
DevCS in JDeveloper Push app files to the repository Copy the files into the folder associated with the repository Git Add All 59 DevCS in JDeveloper Git - Commit All 60
Git Push DevCS in JDeveloper Can specify SSH if needed Push status 61 In DevCS news/activities DevCS ADF Activity 62
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 63 DevCS Build Configure DevCS project to use Ant for build Build New Job Specify JDK 64
Appendix C: Build Process 65 Build 2 Source control Git Select the repository 66
Build 3 Build Steps Add Build Step Invoke Ant Targets, Target as deploy Already in build.xml Path to the build.xml 67 Build 4 Post Build files to archive Build now 68
Build 5 working Check the console for errors Artifacts of Last Successful Build Next step would be Deploy 69