SDC Sweden - Organize your chickens - NuGet for the Enterprise

Maarten Balliauw
Maarten BalliauwDeveloper Advocate
APRIL 16, 2012 | SLIDE 1
Organize Your Chickens
     NuGet for the Enterprise
     Maarten Balliauw
     @maartenballiauw


APRIL 16, 2012 | SLIDE 2
Organize Your Chickens
                           NuGet for the Enterprise



APRIL 16, 2012 | SLIDE 3
Who am I?
      Maarten Balliauw
      Antwerp, Belgium
      www.realdolmen.com
      Focus on web
          ASP.NET MVC, Windows Azure, SignalR, ...
          MVP Windows Azure & ASPInsider
  http://blog.maartenballiauw.be
  @maartenballiauw
  Author: Pro NuGet - http://amzn.to/pronuget
APRIL 16, 2012 | SLIDE 4
Agenda
  NuGet
  Scenarios
             Host your own NuGet repository
             Continuous Package Integration   Chickens?!

             Abusing NuGet
             NuGet Inception
  Conclusion
APRIL 16, 2012 | SLIDE 5
NuGet
APRIL 16, 2012 | SLIDE 6
Welcome to Dependency Hell
 “A term for the           frustration
                                 of software users who have
 installed software packages which have dependencies on
 specific versions of other software packages.” (Wikipedia)




APRIL 16, 2012 | SLIDE 7
Cause and Effect
  Reinventing the wheel
          We don’t need that dependency
          “If they can do it, we can do it, but better”
          What happened to reuse of components?

  Marketing-Driven Versioning
          People are waiting for v2 to buy
          Let’s call it v4 Platform Update SP3 November Edition
           KB2348063 RTW Refresh
          We lost ownership of AssemblyVersion ?

APRIL 16, 2012 | SLIDE 8
Package Management
  NuGet to the Rescue!
         “NuGet is a Visual Studio extension that makes it easy
         to install and update open source libraries and tools in
         Visual Studio.”
  Simple concept
          Find Packages
          (Re)Use Packages
          Produce Packages
APRIL 16, 2012 | SLIDE 9
Demo
       Finding & consuming a NuGet package
APRIL 16, 2012 | SLIDE 10
Demo
       Creating & publishing a NuGet package
APRIL 16, 2012 | SLIDE 11
Semantic Versioning
  Think about your versioning! (semver.org)
          Major             Breaking changes
          Minor             Backwards compatible API
                            additions/changes
          Patch             Bugfixes not affecting the API

          Always specify lowerbound
          Use a version range (lowerbound + upperbound)
           when versioning of package you depend on is
           messed up
APRIL 16, 2012 | SLIDE 12
Hosting a repository
APRIL 16, 2012 | SLIDE 13
Hosting your own repository
  NuGet = public feed
          Privacy
          Intellectual property


  NuGet maintained by package authors
          Author removes v1.0.45 and you depend on it
APRIL 16, 2012 | SLIDE 14
Solutions
      Folder / File share
      NuGet.Server package
      NuGet Gallery (or Orchard Gallery)
      MyGet




APRIL 16, 2012 | SLIDE 15
Demo
       NuGet.Server
APRIL 16, 2012 | SLIDE 16
NuGet.Server limitations
  Only 1 feed per installation
  No UI
          up to you to build it
  No granular security
          only 1 API-key for entire feed
  Conclusion: requires you to develop if you
   want something more useful
APRIL 16, 2012 | SLIDE 17
Meet MyGet
  www.myget.org
  NaaS
          Register and off you go!
  Supports Enterprise scenarios
          Granular security
          Package mirroring
          Proxying
APRIL 16, 2012 | SLIDE 18
Demo
       MyGet
APRIL 16, 2012 | SLIDE 19
Continuous Package
  Integration
APRIL 16, 2012 | SLIDE 20
Typical source control...
  Contains /References (if you are lucky)
          ...and also
           Project/_bin_deployable_assemblies
          ...and also /References/old
          ...and also /..././../.././References


  Usually references GAC-ed assemblies
APRIL 16, 2012 | SLIDE 21
Dependencies
  Software has dependencies. Deal with it.

  But are those YOUR intellectual property?
          YOUR reason to build software?
          YOUR product?

  No. They are dependencies. And they don’t
   belong in source control.
APRIL 16, 2012 | SLIDE 22
Continuous Package Integration
  Can I get rid of all these referenced assemblies
   duplicated all-over my source control system?
    Yes!

  Do I need to install and maintain NuGet on all
   my build agents?
   No!

APRIL 16, 2012 | SLIDE 23
Demo
       Package Restore
APRIL 16, 2012 | SLIDE 24
3rd parties don’t belong in your
 VCS
  Replace them with NuGet packages
  Do commit packagesrepositories.config
   file
  Use Enable-PackageRestore




APRIL 16, 2012 | SLIDE 25
Problem!
  NuGet feed is subject to change...
          PackageSource msbuild property to the rescue
         (NuGet.settings.targets in $(SolutionDir).nuget folder)



  Now what...
          Host your own feed and mirror packages
          Or use MyGet for that 
APRIL 16, 2012 | SLIDE 26
Organize your chickens
  Feed structuring
          Scoped by quality: Build, QA, Production, …
          Scoped by audience: public, restricted access
          Other:
                  Scoped by product version, milestone…
                  Scoped by target platform

APRIL 16, 2012 | SLIDE 27
Guidance
  Publishing a package brings great
   responsibility
          Breaking changes in your packages should be
           versioned accordingly!
          Consumers might choose to no longer
           consume any packages you published

APRIL 16, 2012 | SLIDE 28
Guidance
  Package Integration ≠ Integration Testing
          CI builds reflect output of source control input
          Same input always produces same output

          Do not auto-update packages
         during automated builds


APRIL 16, 2012 | SLIDE 29
Abusing NuGet
APRIL 16, 2012 | SLIDE 30
Abusing NuGet?
 Change of perspective

                            NuGet is a package manager
                            NuGet is a protocol for
                            distributing packages

APRIL 16, 2012 | SLIDE 31
NuGet as a Protocol
APRIL 16, 2012 | SLIDE 32
Chocolatey
  NuGet
          developer library packages
  Chocolatey
          applications and tools packager
          “yum” or “apt-get” for Windows
  www.chocolatey.org
APRIL 16, 2012 | SLIDE 33
Demo
       Chocolatey
APRIL 16, 2012 | SLIDE 34
Automate deployments
  Build results in .nupkg
  Octopus deploys to its tentacles
          Test tentacles
          Staging tentacles
          Production tentacles
  www.octopusdeploy.com
APRIL 16, 2012 | SLIDE 35
APRIL 16, 2012 | SLIDE 36
Build

                               Test

                                      Package

                                      Push

                               Release / Publish

                            Deploy


 Demo
       Continuous Delivery
APRIL 16, 2012 | SLIDE 37
Conclusion
                            Dependencies & people are chickens
                                 Deal with them! NuGet can help

                             Set up your own NuGet repository

                              Continuous package integration

                               NuGet is a package manager
                                      NuGet is a protocol

APRIL 16, 2012 | SLIDE 38
http://blog.maartenballiauw.be
                                               @maartenballiauw




                                   http://amzn.to/pronuget
                            or Install-Package ProNuGet

THANK YOU!
APRIL 16, 2012 | SLIDE 39
1 of 39

Recommended

20111010 agile minds - organize your chickens - nuget for the enterprise by
20111010 agile minds - organize your chickens - nuget for the enterprise20111010 agile minds - organize your chickens - nuget for the enterprise
20111010 agile minds - organize your chickens - nuget for the enterpriseXavier Decoster
972 views51 slides
20100910 cfi social media watch-no.20 by
20100910 cfi social media watch-no.2020100910 cfi social media watch-no.20
20100910 cfi social media watch-no.20sonia ai
571 views22 slides
Chevrolet Nicaragua, Managua airport by
Chevrolet Nicaragua, Managua airportChevrolet Nicaragua, Managua airport
Chevrolet Nicaragua, Managua airportReporter du monde RDM-ROW Reporter Of World
583 views8 slides
Venice Sessions V - Stefano Mirti e Bruna Cortinovis by
Venice Sessions V - Stefano Mirti e Bruna CortinovisVenice Sessions V - Stefano Mirti e Bruna Cortinovis
Venice Sessions V - Stefano Mirti e Bruna Cortinovisvenice sessions
851 views49 slides
Tyler Bell Yahoo by
Tyler Bell YahooTyler Bell Yahoo
Tyler Bell YahooBen Allen
398 views26 slides
Venice Sessions IV - Nicola Greco - Internet is a revolution by
Venice Sessions IV - Nicola Greco - Internet is a revolutionVenice Sessions IV - Nicola Greco - Internet is a revolution
Venice Sessions IV - Nicola Greco - Internet is a revolutionvenice sessions
812 views11 slides

More Related Content

Similar to SDC Sweden - Organize your chickens - NuGet for the Enterprise

Organize your chickens - NuGet for the Enterprise by
Organize your chickens - NuGet for the EnterpriseOrganize your chickens - NuGet for the Enterprise
Organize your chickens - NuGet for the EnterpriseXavier Decoster
2.6K views28 slides
MSDN Live - CI using TFS11 & NuGet by
MSDN Live - CI using TFS11 & NuGetMSDN Live - CI using TFS11 & NuGet
MSDN Live - CI using TFS11 & NuGetXavier Decoster
1.2K views33 slides
Tycho Tutorial (EclipseCon 2012) by
Tycho Tutorial (EclipseCon 2012)Tycho Tutorial (EclipseCon 2012)
Tycho Tutorial (EclipseCon 2012)jsievers
4.5K views14 slides
Architectural Patterns for the Cloud by
Architectural Patterns for the CloudArchitectural Patterns for the Cloud
Architectural Patterns for the CloudMaarten Balliauw
1.8K views48 slides
Intelli j idea-report by
Intelli j idea-reportIntelli j idea-report
Intelli j idea-reportAravindharamanan S
68 views47 slides
NuGet (Anti-)Patterns - Tales from the Trenches by
NuGet (Anti-)Patterns - Tales from the TrenchesNuGet (Anti-)Patterns - Tales from the Trenches
NuGet (Anti-)Patterns - Tales from the TrenchesXavier Decoster
2K views17 slides

Similar to SDC Sweden - Organize your chickens - NuGet for the Enterprise(20)

Organize your chickens - NuGet for the Enterprise by Xavier Decoster
Organize your chickens - NuGet for the EnterpriseOrganize your chickens - NuGet for the Enterprise
Organize your chickens - NuGet for the Enterprise
Xavier Decoster2.6K views
MSDN Live - CI using TFS11 & NuGet by Xavier Decoster
MSDN Live - CI using TFS11 & NuGetMSDN Live - CI using TFS11 & NuGet
MSDN Live - CI using TFS11 & NuGet
Xavier Decoster1.2K views
Tycho Tutorial (EclipseCon 2012) by jsievers
Tycho Tutorial (EclipseCon 2012)Tycho Tutorial (EclipseCon 2012)
Tycho Tutorial (EclipseCon 2012)
jsievers4.5K views
Architectural Patterns for the Cloud by Maarten Balliauw
Architectural Patterns for the CloudArchitectural Patterns for the Cloud
Architectural Patterns for the Cloud
Maarten Balliauw1.8K views
NuGet (Anti-)Patterns - Tales from the Trenches by Xavier Decoster
NuGet (Anti-)Patterns - Tales from the TrenchesNuGet (Anti-)Patterns - Tales from the Trenches
NuGet (Anti-)Patterns - Tales from the Trenches
Xavier Decoster2K views
120018965 lab view-arduino-v1 by Eslem Islam
120018965 lab view-arduino-v1120018965 lab view-arduino-v1
120018965 lab view-arduino-v1
Eslem Islam740 views
Organize your chickens: NuGet for the enterprise by Maarten Balliauw
Organize your chickens: NuGet for the enterpriseOrganize your chickens: NuGet for the enterprise
Organize your chickens: NuGet for the enterprise
Maarten Balliauw1.6K views
LetsGrow SOLID Software development by Patrick Kalkman
LetsGrow SOLID Software developmentLetsGrow SOLID Software development
LetsGrow SOLID Software development
Patrick Kalkman1.1K views
Creating Large Scale Software Platforms with OSGi and an Extension Point Mode... by Nuxeo
Creating Large Scale Software Platforms with OSGi and an Extension Point Mode...Creating Large Scale Software Platforms with OSGi and an Extension Point Mode...
Creating Large Scale Software Platforms with OSGi and an Extension Point Mode...
Nuxeo1.5K views
Building Eclipse Plugins and RCP Applications with Tycho - ECE 2012 by jsievers
Building Eclipse Plugins and RCP Applications with Tycho - ECE 2012Building Eclipse Plugins and RCP Applications with Tycho - ECE 2012
Building Eclipse Plugins and RCP Applications with Tycho - ECE 2012
jsievers2.9K views
OAE Developer Bootcamp by Bert Pareyn
OAE Developer BootcampOAE Developer Bootcamp
OAE Developer Bootcamp
Bert Pareyn699 views
Understanding NuGet implementation for Enterprises by J S Jodha
Understanding NuGet implementation for EnterprisesUnderstanding NuGet implementation for Enterprises
Understanding NuGet implementation for Enterprises
J S Jodha931 views
Java applications containerized and deployed by Anthony Dahanne
Java applications containerized and deployedJava applications containerized and deployed
Java applications containerized and deployed
Anthony Dahanne273 views
Organize your Chickens - NuGet for the Enterprise (UGIALTNET) by Xavier Decoster
Organize your Chickens - NuGet for the Enterprise (UGIALTNET)Organize your Chickens - NuGet for the Enterprise (UGIALTNET)
Organize your Chickens - NuGet for the Enterprise (UGIALTNET)
Xavier Decoster2K views
Eclipse Plug-in Develompent Tips And Tricks by Chris Aniszczyk
Eclipse Plug-in Develompent Tips And TricksEclipse Plug-in Develompent Tips And Tricks
Eclipse Plug-in Develompent Tips And Tricks
Chris Aniszczyk2.8K views
Visual Studio Ceases Support of Add-Ins in Community Previews 14 by Andrey Karpov
Visual Studio Ceases Support of Add-Ins in Community Previews 14Visual Studio Ceases Support of Add-Ins in Community Previews 14
Visual Studio Ceases Support of Add-Ins in Community Previews 14
Andrey Karpov174 views
Hosting your own NuGet private repository by Yu GUAN
Hosting your own NuGet private repositoryHosting your own NuGet private repository
Hosting your own NuGet private repository
Yu GUAN261 views

More from Maarten Balliauw

Nerd sniping myself into a rabbit hole... Streaming online audio to a Sonos s... by
Nerd sniping myself into a rabbit hole... Streaming online audio to a Sonos s...Nerd sniping myself into a rabbit hole... Streaming online audio to a Sonos s...
Nerd sniping myself into a rabbit hole... Streaming online audio to a Sonos s...Maarten Balliauw
360 views64 slides
Building a friendly .NET SDK to connect to Space by
Building a friendly .NET SDK to connect to SpaceBuilding a friendly .NET SDK to connect to Space
Building a friendly .NET SDK to connect to SpaceMaarten Balliauw
182 views47 slides
Microservices for building an IDE - The innards of JetBrains Rider - NDC Oslo... by
Microservices for building an IDE - The innards of JetBrains Rider - NDC Oslo...Microservices for building an IDE - The innards of JetBrains Rider - NDC Oslo...
Microservices for building an IDE - The innards of JetBrains Rider - NDC Oslo...Maarten Balliauw
406 views52 slides
Indexing and searching NuGet.org with Azure Functions and Search - .NET fwday... by
Indexing and searching NuGet.org with Azure Functions and Search - .NET fwday...Indexing and searching NuGet.org with Azure Functions and Search - .NET fwday...
Indexing and searching NuGet.org with Azure Functions and Search - .NET fwday...Maarten Balliauw
180 views32 slides
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain... by
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...Maarten Balliauw
326 views53 slides
JetBrains Australia 2019 - Exploring .NET’s memory management – a trip down m... by
JetBrains Australia 2019 - Exploring .NET’s memory management – a trip down m...JetBrains Australia 2019 - Exploring .NET’s memory management – a trip down m...
JetBrains Australia 2019 - Exploring .NET’s memory management – a trip down m...Maarten Balliauw
280 views42 slides

More from Maarten Balliauw(20)

Nerd sniping myself into a rabbit hole... Streaming online audio to a Sonos s... by Maarten Balliauw
Nerd sniping myself into a rabbit hole... Streaming online audio to a Sonos s...Nerd sniping myself into a rabbit hole... Streaming online audio to a Sonos s...
Nerd sniping myself into a rabbit hole... Streaming online audio to a Sonos s...
Maarten Balliauw360 views
Building a friendly .NET SDK to connect to Space by Maarten Balliauw
Building a friendly .NET SDK to connect to SpaceBuilding a friendly .NET SDK to connect to Space
Building a friendly .NET SDK to connect to Space
Maarten Balliauw182 views
Microservices for building an IDE - The innards of JetBrains Rider - NDC Oslo... by Maarten Balliauw
Microservices for building an IDE - The innards of JetBrains Rider - NDC Oslo...Microservices for building an IDE - The innards of JetBrains Rider - NDC Oslo...
Microservices for building an IDE - The innards of JetBrains Rider - NDC Oslo...
Maarten Balliauw406 views
Indexing and searching NuGet.org with Azure Functions and Search - .NET fwday... by Maarten Balliauw
Indexing and searching NuGet.org with Azure Functions and Search - .NET fwday...Indexing and searching NuGet.org with Azure Functions and Search - .NET fwday...
Indexing and searching NuGet.org with Azure Functions and Search - .NET fwday...
Maarten Balliauw180 views
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain... by Maarten Balliauw
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...
Maarten Balliauw326 views
JetBrains Australia 2019 - Exploring .NET’s memory management – a trip down m... by Maarten Balliauw
JetBrains Australia 2019 - Exploring .NET’s memory management – a trip down m...JetBrains Australia 2019 - Exploring .NET’s memory management – a trip down m...
JetBrains Australia 2019 - Exploring .NET’s memory management – a trip down m...
Maarten Balliauw280 views
.NET Conf 2019 - Indexing and searching NuGet.org with Azure Functions and Se... by Maarten Balliauw
.NET Conf 2019 - Indexing and searching NuGet.org with Azure Functions and Se....NET Conf 2019 - Indexing and searching NuGet.org with Azure Functions and Se...
.NET Conf 2019 - Indexing and searching NuGet.org with Azure Functions and Se...
Maarten Balliauw290 views
CloudBurst 2019 - Indexing and searching NuGet.org with Azure Functions and S... by Maarten Balliauw
CloudBurst 2019 - Indexing and searching NuGet.org with Azure Functions and S...CloudBurst 2019 - Indexing and searching NuGet.org with Azure Functions and S...
CloudBurst 2019 - Indexing and searching NuGet.org with Azure Functions and S...
Maarten Balliauw564 views
NDC Oslo 2019 - Indexing and searching NuGet.org with Azure Functions and Search by Maarten Balliauw
NDC Oslo 2019 - Indexing and searching NuGet.org with Azure Functions and SearchNDC Oslo 2019 - Indexing and searching NuGet.org with Azure Functions and Search
NDC Oslo 2019 - Indexing and searching NuGet.org with Azure Functions and Search
Maarten Balliauw958 views
Approaches for application request throttling - Cloud Developer Days Poland by Maarten Balliauw
Approaches for application request throttling - Cloud Developer Days PolandApproaches for application request throttling - Cloud Developer Days Poland
Approaches for application request throttling - Cloud Developer Days Poland
Maarten Balliauw1.1K views
Indexing and searching NuGet.org with Azure Functions and Search - Cloud Deve... by Maarten Balliauw
Indexing and searching NuGet.org with Azure Functions and Search - Cloud Deve...Indexing and searching NuGet.org with Azure Functions and Search - Cloud Deve...
Indexing and searching NuGet.org with Azure Functions and Search - Cloud Deve...
Maarten Balliauw1.1K views
Approaches for application request throttling - dotNetCologne by Maarten Balliauw
Approaches for application request throttling - dotNetCologneApproaches for application request throttling - dotNetCologne
Approaches for application request throttling - dotNetCologne
Maarten Balliauw246 views
CodeStock - Exploring .NET memory management - a trip down memory lane by Maarten Balliauw
CodeStock - Exploring .NET memory management - a trip down memory laneCodeStock - Exploring .NET memory management - a trip down memory lane
CodeStock - Exploring .NET memory management - a trip down memory lane
Maarten Balliauw1.9K views
ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain... by Maarten Balliauw
ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...
ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...
Maarten Balliauw1.2K views
ConFoo Montreal - Approaches for application request throttling by Maarten Balliauw
ConFoo Montreal - Approaches for application request throttlingConFoo Montreal - Approaches for application request throttling
ConFoo Montreal - Approaches for application request throttling
Maarten Balliauw1.2K views
Microservices for building an IDE – The innards of JetBrains Rider - TechDays... by Maarten Balliauw
Microservices for building an IDE – The innards of JetBrains Rider - TechDays...Microservices for building an IDE – The innards of JetBrains Rider - TechDays...
Microservices for building an IDE – The innards of JetBrains Rider - TechDays...
Maarten Balliauw10.5K views
JetBrains Day Seoul - Exploring .NET’s memory management – a trip down memory... by Maarten Balliauw
JetBrains Day Seoul - Exploring .NET’s memory management – a trip down memory...JetBrains Day Seoul - Exploring .NET’s memory management – a trip down memory...
JetBrains Day Seoul - Exploring .NET’s memory management – a trip down memory...
Maarten Balliauw1.1K views
DotNetFest - Let’s refresh our memory! Memory management in .NET by Maarten Balliauw
DotNetFest - Let’s refresh our memory! Memory management in .NETDotNetFest - Let’s refresh our memory! Memory management in .NET
DotNetFest - Let’s refresh our memory! Memory management in .NET
Maarten Balliauw480 views
VISUG - Approaches for application request throttling by Maarten Balliauw
VISUG - Approaches for application request throttlingVISUG - Approaches for application request throttling
VISUG - Approaches for application request throttling
Maarten Balliauw817 views
What is going on - Application diagnostics on Azure - TechDays Finland by Maarten Balliauw
What is going on - Application diagnostics on Azure - TechDays FinlandWhat is going on - Application diagnostics on Azure - TechDays Finland
What is going on - Application diagnostics on Azure - TechDays Finland
Maarten Balliauw746 views

Recently uploaded

NTGapps NTG LowCode Platform by
NTGapps NTG LowCode Platform NTGapps NTG LowCode Platform
NTGapps NTG LowCode Platform Mustafa Kuğu
437 views30 slides
The Role of Patterns in the Era of Large Language Models by
The Role of Patterns in the Era of Large Language ModelsThe Role of Patterns in the Era of Large Language Models
The Role of Patterns in the Era of Large Language ModelsYunyao Li
91 views65 slides
Why and How CloudStack at weSystems - Stephan Bienek - weSystems by
Why and How CloudStack at weSystems - Stephan Bienek - weSystemsWhy and How CloudStack at weSystems - Stephan Bienek - weSystems
Why and How CloudStack at weSystems - Stephan Bienek - weSystemsShapeBlue
247 views13 slides
Live Demo Showcase: Unveiling Dell PowerFlex’s IaaS Capabilities with Apache ... by
Live Demo Showcase: Unveiling Dell PowerFlex’s IaaS Capabilities with Apache ...Live Demo Showcase: Unveiling Dell PowerFlex’s IaaS Capabilities with Apache ...
Live Demo Showcase: Unveiling Dell PowerFlex’s IaaS Capabilities with Apache ...ShapeBlue
129 views10 slides
Qualifying SaaS, IaaS.pptx by
Qualifying SaaS, IaaS.pptxQualifying SaaS, IaaS.pptx
Qualifying SaaS, IaaS.pptxSachin Bhandari
1.1K views8 slides
2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue by
2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue
2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlueShapeBlue
152 views23 slides

Recently uploaded(20)

NTGapps NTG LowCode Platform by Mustafa Kuğu
NTGapps NTG LowCode Platform NTGapps NTG LowCode Platform
NTGapps NTG LowCode Platform
Mustafa Kuğu437 views
The Role of Patterns in the Era of Large Language Models by Yunyao Li
The Role of Patterns in the Era of Large Language ModelsThe Role of Patterns in the Era of Large Language Models
The Role of Patterns in the Era of Large Language Models
Yunyao Li91 views
Why and How CloudStack at weSystems - Stephan Bienek - weSystems by ShapeBlue
Why and How CloudStack at weSystems - Stephan Bienek - weSystemsWhy and How CloudStack at weSystems - Stephan Bienek - weSystems
Why and How CloudStack at weSystems - Stephan Bienek - weSystems
ShapeBlue247 views
Live Demo Showcase: Unveiling Dell PowerFlex’s IaaS Capabilities with Apache ... by ShapeBlue
Live Demo Showcase: Unveiling Dell PowerFlex’s IaaS Capabilities with Apache ...Live Demo Showcase: Unveiling Dell PowerFlex’s IaaS Capabilities with Apache ...
Live Demo Showcase: Unveiling Dell PowerFlex’s IaaS Capabilities with Apache ...
ShapeBlue129 views
2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue by ShapeBlue
2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue
2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue
ShapeBlue152 views
"Surviving highload with Node.js", Andrii Shumada by Fwdays
"Surviving highload with Node.js", Andrii Shumada "Surviving highload with Node.js", Andrii Shumada
"Surviving highload with Node.js", Andrii Shumada
Fwdays58 views
Optimizing Communication to Optimize Human Behavior - LCBM by Yaman Kumar
Optimizing Communication to Optimize Human Behavior - LCBMOptimizing Communication to Optimize Human Behavior - LCBM
Optimizing Communication to Optimize Human Behavior - LCBM
Yaman Kumar38 views
Redefining the book supply chain: A glimpse into the future - Tech Forum 2023 by BookNet Canada
Redefining the book supply chain: A glimpse into the future - Tech Forum 2023Redefining the book supply chain: A glimpse into the future - Tech Forum 2023
Redefining the book supply chain: A glimpse into the future - Tech Forum 2023
BookNet Canada44 views
"Running students' code in isolation. The hard way", Yurii Holiuk by Fwdays
"Running students' code in isolation. The hard way", Yurii Holiuk "Running students' code in isolation. The hard way", Yurii Holiuk
"Running students' code in isolation. The hard way", Yurii Holiuk
Fwdays36 views
Mitigating Common CloudStack Instance Deployment Failures - Jithin Raju - Sha... by ShapeBlue
Mitigating Common CloudStack Instance Deployment Failures - Jithin Raju - Sha...Mitigating Common CloudStack Instance Deployment Failures - Jithin Raju - Sha...
Mitigating Common CloudStack Instance Deployment Failures - Jithin Raju - Sha...
ShapeBlue183 views
What’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlue by ShapeBlue
What’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlueWhat’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlue
What’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlue
ShapeBlue265 views
KVM Security Groups Under the Hood - Wido den Hollander - Your.Online by ShapeBlue
KVM Security Groups Under the Hood - Wido den Hollander - Your.OnlineKVM Security Groups Under the Hood - Wido den Hollander - Your.Online
KVM Security Groups Under the Hood - Wido den Hollander - Your.Online
ShapeBlue225 views
Digital Personal Data Protection (DPDP) Practical Approach For CISOs by Priyanka Aash
Digital Personal Data Protection (DPDP) Practical Approach For CISOsDigital Personal Data Protection (DPDP) Practical Approach For CISOs
Digital Personal Data Protection (DPDP) Practical Approach For CISOs
Priyanka Aash162 views
The Power of Generative AI in Accelerating No Code Adoption.pdf by Saeed Al Dhaheri
The Power of Generative AI in Accelerating No Code Adoption.pdfThe Power of Generative AI in Accelerating No Code Adoption.pdf
The Power of Generative AI in Accelerating No Code Adoption.pdf
Saeed Al Dhaheri39 views
Elevating Privacy and Security in CloudStack - Boris Stoyanov - ShapeBlue by ShapeBlue
Elevating Privacy and Security in CloudStack - Boris Stoyanov - ShapeBlueElevating Privacy and Security in CloudStack - Boris Stoyanov - ShapeBlue
Elevating Privacy and Security in CloudStack - Boris Stoyanov - ShapeBlue
ShapeBlue224 views
Import Export Virtual Machine for KVM Hypervisor - Ayush Pandey - University ... by ShapeBlue
Import Export Virtual Machine for KVM Hypervisor - Ayush Pandey - University ...Import Export Virtual Machine for KVM Hypervisor - Ayush Pandey - University ...
Import Export Virtual Machine for KVM Hypervisor - Ayush Pandey - University ...
ShapeBlue120 views
Enabling DPU Hardware Accelerators in XCP-ng Cloud Platform Environment - And... by ShapeBlue
Enabling DPU Hardware Accelerators in XCP-ng Cloud Platform Environment - And...Enabling DPU Hardware Accelerators in XCP-ng Cloud Platform Environment - And...
Enabling DPU Hardware Accelerators in XCP-ng Cloud Platform Environment - And...
ShapeBlue108 views

SDC Sweden - Organize your chickens - NuGet for the Enterprise

  • 1. APRIL 16, 2012 | SLIDE 1
  • 2. Organize Your Chickens NuGet for the Enterprise Maarten Balliauw @maartenballiauw APRIL 16, 2012 | SLIDE 2
  • 3. Organize Your Chickens NuGet for the Enterprise APRIL 16, 2012 | SLIDE 3
  • 4. Who am I?  Maarten Balliauw  Antwerp, Belgium  www.realdolmen.com  Focus on web  ASP.NET MVC, Windows Azure, SignalR, ...  MVP Windows Azure & ASPInsider  http://blog.maartenballiauw.be  @maartenballiauw  Author: Pro NuGet - http://amzn.to/pronuget APRIL 16, 2012 | SLIDE 4
  • 5. Agenda  NuGet  Scenarios  Host your own NuGet repository  Continuous Package Integration Chickens?!  Abusing NuGet  NuGet Inception  Conclusion APRIL 16, 2012 | SLIDE 5
  • 7. Welcome to Dependency Hell “A term for the frustration of software users who have installed software packages which have dependencies on specific versions of other software packages.” (Wikipedia) APRIL 16, 2012 | SLIDE 7
  • 8. Cause and Effect  Reinventing the wheel  We don’t need that dependency  “If they can do it, we can do it, but better”  What happened to reuse of components?  Marketing-Driven Versioning  People are waiting for v2 to buy  Let’s call it v4 Platform Update SP3 November Edition KB2348063 RTW Refresh  We lost ownership of AssemblyVersion ? APRIL 16, 2012 | SLIDE 8
  • 9. Package Management  NuGet to the Rescue! “NuGet is a Visual Studio extension that makes it easy to install and update open source libraries and tools in Visual Studio.”  Simple concept  Find Packages  (Re)Use Packages  Produce Packages APRIL 16, 2012 | SLIDE 9
  • 10. Demo Finding & consuming a NuGet package APRIL 16, 2012 | SLIDE 10
  • 11. Demo Creating & publishing a NuGet package APRIL 16, 2012 | SLIDE 11
  • 12. Semantic Versioning  Think about your versioning! (semver.org) Major Breaking changes Minor Backwards compatible API additions/changes Patch Bugfixes not affecting the API  Always specify lowerbound  Use a version range (lowerbound + upperbound) when versioning of package you depend on is messed up APRIL 16, 2012 | SLIDE 12
  • 13. Hosting a repository APRIL 16, 2012 | SLIDE 13
  • 14. Hosting your own repository  NuGet = public feed  Privacy  Intellectual property  NuGet maintained by package authors  Author removes v1.0.45 and you depend on it APRIL 16, 2012 | SLIDE 14
  • 15. Solutions  Folder / File share  NuGet.Server package  NuGet Gallery (or Orchard Gallery)  MyGet APRIL 16, 2012 | SLIDE 15
  • 16. Demo NuGet.Server APRIL 16, 2012 | SLIDE 16
  • 17. NuGet.Server limitations  Only 1 feed per installation  No UI  up to you to build it  No granular security  only 1 API-key for entire feed  Conclusion: requires you to develop if you want something more useful APRIL 16, 2012 | SLIDE 17
  • 18. Meet MyGet  www.myget.org  NaaS  Register and off you go!  Supports Enterprise scenarios  Granular security  Package mirroring  Proxying APRIL 16, 2012 | SLIDE 18
  • 19. Demo MyGet APRIL 16, 2012 | SLIDE 19
  • 20. Continuous Package Integration APRIL 16, 2012 | SLIDE 20
  • 21. Typical source control...  Contains /References (if you are lucky)  ...and also Project/_bin_deployable_assemblies  ...and also /References/old  ...and also /..././../.././References  Usually references GAC-ed assemblies APRIL 16, 2012 | SLIDE 21
  • 22. Dependencies  Software has dependencies. Deal with it.  But are those YOUR intellectual property?  YOUR reason to build software?  YOUR product?  No. They are dependencies. And they don’t belong in source control. APRIL 16, 2012 | SLIDE 22
  • 23. Continuous Package Integration  Can I get rid of all these referenced assemblies duplicated all-over my source control system? Yes!  Do I need to install and maintain NuGet on all my build agents? No! APRIL 16, 2012 | SLIDE 23
  • 24. Demo Package Restore APRIL 16, 2012 | SLIDE 24
  • 25. 3rd parties don’t belong in your VCS  Replace them with NuGet packages  Do commit packagesrepositories.config file  Use Enable-PackageRestore APRIL 16, 2012 | SLIDE 25
  • 26. Problem!  NuGet feed is subject to change...  PackageSource msbuild property to the rescue (NuGet.settings.targets in $(SolutionDir).nuget folder)  Now what...  Host your own feed and mirror packages  Or use MyGet for that  APRIL 16, 2012 | SLIDE 26
  • 27. Organize your chickens  Feed structuring  Scoped by quality: Build, QA, Production, …  Scoped by audience: public, restricted access  Other:  Scoped by product version, milestone…  Scoped by target platform APRIL 16, 2012 | SLIDE 27
  • 28. Guidance  Publishing a package brings great responsibility  Breaking changes in your packages should be versioned accordingly!  Consumers might choose to no longer consume any packages you published APRIL 16, 2012 | SLIDE 28
  • 29. Guidance  Package Integration ≠ Integration Testing  CI builds reflect output of source control input  Same input always produces same output  Do not auto-update packages during automated builds APRIL 16, 2012 | SLIDE 29
  • 30. Abusing NuGet APRIL 16, 2012 | SLIDE 30
  • 31. Abusing NuGet? Change of perspective NuGet is a package manager NuGet is a protocol for distributing packages APRIL 16, 2012 | SLIDE 31
  • 32. NuGet as a Protocol APRIL 16, 2012 | SLIDE 32
  • 33. Chocolatey  NuGet  developer library packages  Chocolatey  applications and tools packager  “yum” or “apt-get” for Windows  www.chocolatey.org APRIL 16, 2012 | SLIDE 33
  • 34. Demo Chocolatey APRIL 16, 2012 | SLIDE 34
  • 35. Automate deployments  Build results in .nupkg  Octopus deploys to its tentacles  Test tentacles  Staging tentacles  Production tentacles  www.octopusdeploy.com APRIL 16, 2012 | SLIDE 35
  • 36. APRIL 16, 2012 | SLIDE 36
  • 37. Build Test Package Push Release / Publish Deploy Demo Continuous Delivery APRIL 16, 2012 | SLIDE 37
  • 38. Conclusion Dependencies & people are chickens Deal with them! NuGet can help Set up your own NuGet repository Continuous package integration NuGet is a package manager NuGet is a protocol APRIL 16, 2012 | SLIDE 38
  • 39. http://blog.maartenballiauw.be @maartenballiauw http://amzn.to/pronuget or Install-Package ProNuGet THANK YOU! APRIL 16, 2012 | SLIDE 39

Editor's Notes

  1. Maarten
  2. Xavier: Terugverwijzen naar “Marketing versioning”
  3. Start with empty MVC template + addNuGet.ServerpkgRun siteDrop pkgs in packages folderRefresh browserFeed toevoegen in VS & show pkgs
  4. Inloggen en feed aanmakenPackage pushen vanuit NPEFeed toevoegen aan VSOp MyGet feed security instellenPackage installen in VS en tonen dat er basic auth bijkomtPackage van NuGet toevoegen op MyGet en tonen dat je alle dependencies kan meepakken, mirroring, … en dat je ook gewoon van uw packages.config kan toevoegen
  5. - Het feit dat NuGet.org geen garanties biedt op content- Wat als mensen packages verwijderen? BUILD breaks, DEVS unhappy again
  6. Now isnot the time to take a nap (NaaP) NuGet is more than a package (system), it’s a protocol to:Distributesfunctionality (automateanything!, cfrScaffolding!)Distribute websites (akadeployments!)Distribute software in general 
  7. Xavier
  8. Maarten
  9. Maarten
  10. XavierMaartenXavierMaarten