Application Lifecycle Management

Slides:



Advertisements
Similar presentations
Continuous Integration (CI) By Jim Rush Version Control Build Test Report.
Advertisements

Building Enterprise Applications Using Visual Studio ®.NET Enterprise Architect.
Software Factory Assembling Applications with Models, Patterns, Frameworks and Tools Anna Liu Senior Architect Advisor Microsoft Australia.
Low level CASE: Source Code Management. Source Code Management  Also known as Configuration Management  Source Code Managers are tools that: –Archive.
Rob Reynolds | | Twitter: ferventcoder.
BizTalk Deployment using Visual Studio Release Management
Source Code Management Or Configuration Management: How I learned to Stop Worrying and Hate My Co-workers Less.
Source Control Repositories for Enabling Team Working Svetlin Nakov Telerik Corporation
© 2006, Cognizant Technology Solutions. All Rights Reserved. The information contained herein is subject to change without notice. Automation – How to.
Using Microsoft SharePoint to Develop Workflow and Business Process Automation Ted Perrotte National Practice Manager, Quilogy, Microsoft Office SharePoint.
Improving Software Quality with Continuous Integration
Continuous Integration for Databases Learn how to automate your build and test Steve Jones Red Gate Software Part II of the Continuous Delivery for Databases.
#RefreshCache CI - Daily Builds w/Jenkins – an Open Source Continuous Integration Server Nick Airdo Community Developer Advocate Central Christian Church.
CONTINUOUS INTEGRATION, DELIVERY & DEPLOYMENT ONE CLICK DELIVERY.
BIT 285: ( Web) Application Programming Lecture 07 : Tuesday, January 27, 2015 Git.
Craig Berntson Chief Software Gardener Mojo Software Worx Branches and Merges are Bears, Oh My!
ESB Guidance 2.0 Kevin Gock
Visual Basic: An Object Oriented Approach 12 – Creating and using ActiveX objects.
© 2012 IBM Corporation Rational Insight | Back to Basis Series SCM introduction Chu Shu June 2012.
Created by the Community for the Community BizTalk & Build.
Stimulsoft Reports.Net 20 Problems which Stimulsoft Reports.Net solves
Creating a Maintainable Software Ecosystem Jeremy D. Miller November 27th, 2007.
Introduction to Version Control
Why you should be using Version Control. Matt Krass Electrical/Software Engineer November 22, 2014.
XML in Development of Distributed Systems Tooling Programming Runtime.
1 Lecture 19 Configuration Management Software Engineering.
GIT An introduction to GIT Source Control. What is GIT (1 of 2) ▪ “Git is a free and open source distributed version control system designed to handle.
Version control Using Git Version control, using Git1.
1 Performance Optimization In QTP Execution Over Video Automation Testing Speaker : Krishnesh Sasiyuthaman Nair Date : 10/05/2012.
Copyright © 2015 – Curt Hill Version Control Systems Why use? What systems? What functions?
Anubha Gupta | Software Engineer Visual Studio Online Microsoft Corp. Visual Studio Enterprise Leveraging modern tools to streamline Build and Release.
App always works on this person’s box Is fast, smart & loves to code… Gets a cool idea on Team Building App... May invite people to see the cool app.
UHCS 2005, slide 1 About Continuous Integration. UHCS 2005, slide 2 Why do you write Unit Test ? Improve quality/robustness of your code Quick feedback.
Infrastructure as code. “Enable the reconstruction of the business from nothing but a source code repository, an application data backup, and bare metal.
(1) Introduction to Continuous Integration Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of.
(1) Introduction to Continuous Integration Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of.
Version Control and SVN ECE 297. Why Do We Need Version Control?
UNDERSTANDING YOUR OPTIONS FOR CLIENT-SIDE DEVELOPMENT IN OFFICE 365 Mark Rackley
An Introduction to Git David Johndrow COMP 490 – Senior Design & Development 2/11/16.
TEAM FOUNDATION VERSION CONTROL AN OVERVIEW AND WALKTHROUGH By: Michael Mallar.
Continuous Integration for Databases Steve Jones SQLServerCentral Red Gate Software.
Continuous Deployments using SSDT
1 Punishment Through Continuous Delivery If it hurts, do it more often…
Benjamin Day Get Good at DevOps: Feature Flag Deployments with ASP.NET, WebAPI, & JavaScript.
Rome 31 January -1 February Team Development in CRM Shan McArthur CEO / CTO Adxstudio, CRM MVP.
Why you should be using VSTSWhy you should be using VSTS Visual Studio Team Services (VSTS) Nathan Lasnoski Vice President of blog.concurrency.com.
BIT 285: ( Web) Application Programming Lecture 07 : Tuesday, January 27, 2015 Git.
Building Your ETL Framework with Biml Meagan Longoria March 19, 2016.
Tools and technology usage in PFMS application lifecycle management process LEPL Financial-Analytical Service, Ministry of Finance October, 2015 Dimitri.
Automated Build and Test
DevOps with ASP.NET Core and Entity Framework Core
Building Enterprise Applications Using Visual Studio®
Build and Test system for FairRoot
Stress Free Deployments with Octopus Deploy
Version control, using Git
4th Forum How to easily offer your application as a self-service template by using OpenShift and GitLab-CI 4th Forum Alberto.
Build /21/2018 © 2015 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION.
Applied Software Implementation & Testing
Continuous Integration For Databases
X in [Integration, Delivery, Deployment]
Microsoft /12/2018 8:06 AM BRK2103 Deliver more features faster with a modern development and test solution Claude Remillard Group Program Manager.
YeahMobi CD Practice based on Container -- openstack meetup
Your code is not just…your code
Continuous Integration
SSDT and Database Project Basics
From Development to Production: Optimizing for Continuous Delivery
Keeping your SQL Code safe
Mark Quirk Head of Technology Developer & Platform Group
Jamie Cool Program Manager Microsoft
Your code is not just…your code
Presentation transcript:

Application Lifecycle Management Sort of … From a technical BizTalk perspective ;)

Who are we? Robin Hultman Solution Architect at iBiz Solutions Richard Hallgren Solution Architect at iBiz Solutions

What’s ALM?

Why is ALM important in a BizTalk context? Business critical solutions. Changes need to be controlled and reversible. Complex solutions from a technical perspective. Complex solutions from a organizational perspective.

What can you expect today? Our humble opinions. No silver bullet, there are many ways to skin a cat. Can we reach 80 % with 20 % effort?

Packaging and reference management Continuous Integration workflow Fix it! Ok! I’ll get to work! Three days later Stop everything! And fix this. BOOM Code workflow Work Value Integration test Unit test Automated tests Packaging and reference management Continuous Integration workflow

Code workflow

Distributed version control is easy ...?

CVCS - Subversion One shared central repository When you check in code, everybody else gets it http://hginit.com/

Problems with CVCS Do you write perfect code the first time? Changes Commit buggy code Avoid checking in Do you write perfect code the first time? New code is buggy Fear of checking in Why have version control if you can’t use it?

DVCS - Git Every developer has their own private repository Commit whenever you like Push changes to central repository when it’s ready. Separates the act of committing new code from the act of inflicting it on everybody else http://hginit.com/

The dreaded merge Subversion thinks about revisions OK, I have version 1. And now I have version 2. And now I have version 3 Git thinks about change sets I had nothing. And then I got these changes. And then I got these other changes. So what is the difference? When it comes to merge Git knows a lot more about what we have done than Subversion Feel free to branch because merge isn’t going to be a nightmare Keeping stable and dev code separate is what source control is all about

Git and Visual Studio Visual Studio update 2 required

Demo: DVCS Workflow This is what you’ll see A typical code workflow with an ongoing change from one developer (dev 1), while an other developer (dev 2) has to fix a critical bug, in the same solution!

Add logic to handle additional costs master Add logic to handle additional costs Ok! I’ll get to work! Customer Dev1 Dev2 fix in master Creates dev1/addadditional-costs Making change in branch ”dev1/AddAdditionalCost” Critical bug! Merges dev1/additional-costs to master We’ll fix it at once! Fix the bug. It’s prioritized! Fixing bug in directly in master Bug fixed and deployed! Great. The Additional cost fix is tested and ready for prod Great. I’ll make a deployment package! Merge additional cost fix to master for deployment

Takeaways: Code workflow A DVCS makes it possible to commit new code with out stepping on everybody's toes In a DVCS branching and merging actually works … A local repository is powerful once one gets the hang of it Git and DVCSs has a learning curve

Questions and comments: Code workflow

Automated Testing

”Integration tests” vs. ”Unit tests” Application Component A Component C Component B Unit tests Integration tests

”Integration tests” vs. ”Unit tests” in BizTalk Server BizTalk Server Engine Receive Send Integration tests in BizTalk requires all artifacts to be installed on the server! Remember Hard to pinpoint the error once test fails. Require fully automated installation on build server to work – on each test run! Integration tests Dlls Transformations Schemas Orchestrations Pipelines Other Unit tests

Demo: Unit test map This is what you’ll see Use BizTalk Servers built-in features to test maps Expose a few interfaces to interact with the artifact from test tool Use MsTest to execute the tests

Unit testing pipeline components

Problems Lives inside a pipeline Often has a lot of pre-conditions Component1 Component2 Component3 Component4 IBaseMessage IPipelineContext Component to test Lives inside a pipeline IBaseMessage and IPipelineContext Often has a lot of pre-conditions Annoying build-deploy-test-bounce cycle

Demo: Unit test pipeline component This is what you’ll see Utility classes for creating IBaseMessage from XML string Pipeline wrappers to set pipeline context Enables debugging of component without deployment https://github.com/tomasr/pipelinetesting/blob/master/Winterdom. BizTalk.PipelineTesting.Tests/Simple/PipelineUsageTests.cs

Takeaways: Automated testing Keep it simple stupid – unit test takes us far! Enables testing from build server and directly from Visual Studio with minimal effort – without any installation. Quickly becomes important part of development workflow. Test logic and code directly without testing framework code Easy to isolate tests and logic and pinpoint failing tests

Questions and comments: Automated testing

Packaging and dependency management

Why is there so many dependencies? BizTalk Server solutions typically include artifacts like schemas, maps, pipelines and orchestrations. When it comes to grouping these artifacts into assemblies we want them to be: Small and easy to deploy Reusable when possible Logically related  When one artifact needs to use another artifact, it is said to be dependent on that artifact. If the artifacts are located in different assemblies, we have an assembly reference.

Challenges – a developer’s perspective Assembly references needs to be satisfied before we can build Hopefully the dependencies are properly documented Trial and error How can we share components? Hard to target a specific version of a shared resource Build all dependencies Build initial project Build initial project

What if… Only need a binary for all references Publish shared assemblies as part of the build process to a designated deploy area Automatically resolving references

What if…

Is NuGet the solution? NuGet is a package manager for the Microsoft developer platform Can create NuGet-packages from assemblies NuGet packages can be published to a feed server Developers can browse and download NuGet packages in Visual Studio Packages are versioned Visual Studio can automatically resolve and restore references to packages A NuGet feed can be private or public. Only one problem…

Is NuGet the solution? …NuGet does not support btproj projects nuget.codeplex.com/SourceControl/network/forks/robinhultm an/NuGetWithBizTalkProjectExtension/contribution/5960

Demo: NuGet packaging of BizTalk artefacts This is what you’ll see How we can package a shared BizTalk Schema in NuGet package How we can use the NuGet package to solve a needed dependency on one of our solutions How a version updates of dependencies are handled and managed using NuGet

Azure Shared EDI Schema Solution Source control server Build server CustomerInvoice Solution Dev1 Azure Build server Source control server Change to shared solution Dev2 CustomerInvoice Solution Shared EDI Schema Solution

Demo: NuGet packaging of BizTalk pipeline components This is what you’ll see How we can package a pipeline component as a NuGet package. How we can use the NuGet package to solve a needed dependency on one of our solutions.

Takeaways: Packaging and dependency management Dependency management in BizTalk is a small problems but can be tricky enough on a build server – NuGet offers a nice solution to the problem Sharing of pipeline components is important to not reinvent the wheel over and over NuGet has a nice solution to versioning!

Questions and comments: Packaging and dependency management

Continuous Integration

What’s Continuous Integration/delivery/deployment really? Developers Source control server Build server Compile Test Package Version/ label Dlls Deployment area Automated deployment BizTalk Server

Why bother using CI etc? Continuous Integration Continuous Delivery All build code is actual check-in code in source control. Code has been build on a machine with no special settings or dependencies – ”it works on my machine” All build are versioned and labeled Continuous Delivery All packages are stored in one common area and one can always roll back to previous versions Always has ready-to-go packages for new or recovered environments Continuous Deployment Can save a lot of installation time ;) Get small changes out early, no big bang deployment

Continuous Integration/delivery/deployment in BizTalk 3. Traditionally we had to install in a server before we could get a deployable package. Sweet spot! 2. This is usually tricky in a BizTalk solution … 1. Here we want a deployable package

Deployment Framework for BizTalk is an option Deploy a complex solution containing orchestrations, schemas, maps, rules, custom components, pipeline components, pipelines -- even ESB itineraries -- in minutes, with no human intervention Eliminate ALL manual steps in your BizTalk deployments Consolidate all of your environment- specific configuration and runtime settings into one, easy-to-use Excel spreadsheet Maintain a SINGLE binding file that works for all deployment environments Make automated deployment a native part of the BizTalk development cycle, then use the same script to deploy to your servers Bonus Reason: It's free! PowerShell and MSBuild are fun too! 

Automated installation Can we reach our “sweet spot” - Continuous Delivery - without installation? Option 1 MSI Build Server BizTalk Server Compile Dlls Automated installation Export MSI BTDF BTDF/BTS task MSI Build Server Compile Dlls Export MSI BtsMsiTask Option 2

Demo: BtsMsiTask and TFS This is what you’ll see Build a MSI directly from Visual Studio without any installation in BizTalk Server using BtsMsiTask and MSBuild Execute BtsMsiTask as part of a TFS build

Bonus demo: BtsMsiTask and TeamCity This is what you’ll see We do as the NuGet team and show you how it’s done in TeamCity 

Takeaways: Continuous Integration CI is an important pattern to develop and maintain high quality software over time in teams CI can be hard to do with BizTalk Server but there are tricks that will help you to keep it simple – and still get you a lot of value

Questions and comments: Continuous Integration

Final thoughts Again, it all our opinions – different solutions for different needs. A workflow and build solution needs to be simple – the actual solution usually gets complicated enough! One can get far using unit tests and simple Continuous Integration and Continuous Delivery.