Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

CI/CD on Windows-Based Environments - Noam Shochat, eToro - DevOpsDays Tel Aviv 2015

434 views

Published on

CI/CD on Windows-Based Environments - Noam Shochat, eToro - DevOpsDays Tel Aviv 2015

Published in: Technology
  • Be the first to comment

CI/CD on Windows-Based Environments - Noam Shochat, eToro - DevOpsDays Tel Aviv 2015

  1. 1. CI/CD on Windows-based Environments Your Social Investment Network eToro©2015 Presentation materials are confidential and should not be copied, distributed or passed on, directly or indirectly, to any other person. Noam Shochat, Sr. DevOps Engineer | noamsh@etoro.com
  2. 2. ● The world’s largest social investment network ● Founded in 2007, raised $60M ● >200 employees (~half in Engineering) ● Offices in IL, UK, CY, RU and expending Some Basic Facts... eToro©2015 Presentation materials are confidential and should not be copied, distributed or passed on, directly or indirectly, to any other person.
  3. 3. 5M registered users. 140 Countries. 150M Trades.
  4. 4. 9 different Apps!
  5. 5. eToro’s Legacy Technology ● HTML/ASP, Flash, iOS & Android clients ● 2 Geo-distributed data centers ● >130 Services ● > 500 Servers ● Hybrid MS tech stack & Open Source Server technologies (Redis, RabbitMQ, HAProxy, etc…) eToro©2015 Presentation materials are confidential and should not be copied, distributed or passed on, directly or indirectly, to any other person.
  6. 6. CI / CD ingredient CI / CD Code commit Deploy and tests in Production Build, Unit tests
  7. 7. Different OS’s 5 different environments Different development languages
  8. 8. Manage all with Jenkins
  9. 9. CI / CD Pipeline Check-In GitHub Mercurial Build MSBuild Unit tests NUnit Integratio n tests UI Testing Prod Deployment Managed by Jenkins QA Deployment
  10. 10. Jenkins Cross Platform Orchestration Jenkins master
  11. 11. Build your flow with Jenkins ● Build Flow plugin ● WorkFlow plugin
  12. 12. Inside Jenkins Job Script languages: ● Batch ● Powershell ● Shell ● Ruby
  13. 13. Auditing and reporting ● Graphite ● Splunk ● Slack
  14. 14. Provisioning servers and Deploy with Puppet
  15. 15. Things we’re doing with puppet define general::web_service( $artifact_source, $config_file_name='web.config', $configerb_path, $erb_config_file_name='web.config.erb', $deploy_destination, $zipfile_mount_name, $port=80, $enableanonymousauthentication=false, $template_config={} ) { include general::7zip include general::remotesign include general::basicfoldersinstall addwebsite {"${name}": port => $port, require => Class['enableiis'] } addwebsite::enablewindowsauthentication{"${name}": site_name => $name, require => [Class['enableiis'],Addwebsite["${name}"]], } addwebsite::enableanonymousauthentication{"${name}": site_name => $name, enable => $enableanonymousauthentication, require => [Class['enableiis'],Addwebsite["${name}"]], } ● Enable features ● Install 3rd party apps ● Creating folders ● Installing / Configure win services ● Installing / Configure websites (IIS)
  16. 16. Orchestration with mcollective
  17. 17. Mcollective architecture Mcollective Client RabbitMQ Server Servers
  18. 18. Trigger Mcollective
  19. 19. Tools for Key Value store
  20. 20. Hiera ● Developed by Puppet labs, there for fully integrated with puppet ● Key value store ● Configuration file per environment on the same puppet master
  21. 21. ETCD acl to the office acl to the office Azure North Europe server 1 server 2 APP1 DLL APP2 DLL APP3 DLL CCM 2 UI - Admin server 3 server 4 CCM 4 Azure West Europe ILB LBS ILB LBS CCM 3CCM 1
  22. 22. CI / CD on Azure Cloud
  23. 23. PAAS in Azure ● Cloud service ● Slots ● Uploading Packages ● Integration with github (Git Hook)
  24. 24. IAAS on Azure ● Jenkins agent ● Puppet master ● Mcollective client ● Mcollective server and puppet agent on all servers.
  25. 25. Summaries ● Jenkins - Main CI / CD tool ● Puppet - Provisioning and deployment ● Mcollective - Orchestrate ● PowerShell Azure SDK - For deploying Web/worker roles ● This is all just tools - DevOps is a lot more
  26. 26. Wish List ● Automate the creation of new Jobs and Flows in Jenkins. ● More self service
  27. 27. Noam Shochat, Sr. DevOps Engineer | noamsh@etoro.com

×