"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[6927],{3905:(e,t,o)=>{o.d(t,{Zo:()=>c,kt:()=>g});var n=o(67294);function r(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,n)}return o}function s(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?a(Object(o),!0).forEach((function(t){r(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):a(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function i(e,t){if(null==e)return{};var o,n,r=function(e,t){if(null==e)return{};var o,n,r={},a=Object.keys(e);for(n=0;n<a.length;n++)o=a[n],t.indexOf(o)>=0||(r[o]=e[o]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)o=a[n],t.indexOf(o)>=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(r[o]=e[o])}return r}var l=n.createContext({}),u=function(e){var t=n.useContext(l),o=t;return e&&(o="function"==typeof e?e(t):s(s({},t),e)),o},c=function(e){var t=u(e.components);return n.createElement(l.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var o=e.components,r=e.mdxType,a=e.originalType,l=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),p=u(o),h=r,g=p["".concat(l,".").concat(h)]||p[h]||d[h]||a;return o?n.createElement(g,s(s({ref:t},c),{},{components:o})):n.createElement(g,s({ref:t},c))}));function g(e,t){var o=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=o.length,s=new Array(a);s[0]=h;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[p]="string"==typeof e?e:r,s[1]=i;for(var u=2;u<a;u++)s[u]=o[u];return n.createElement.apply(null,s)}return n.createElement.apply(null,o)}h.displayName="MDXCreateElement"},61638:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>d,frontMatter:()=>a,metadata:()=>i,toc:()=>u});var n=o(87462),r=(o(67294),o(3905));const a={layout:"post",title:"CloudStack European User Group Virtual - April 7th, 2022",tags:["news"],authors:["ivet"],slug:"cloudstack-european-user-group-virtual"},s=void 0,i={permalink:"/blog/cloudstack-european-user-group-virtual",editUrl:"https://github.com/apache/cloudstack-www/tree/main/blog/2022-03-30-cloudstack-european-user-group-virtual.md",source:"@site/blog/2022-03-30-cloudstack-european-user-group-virtual.md",title:"CloudStack European User Group Virtual - April 7th, 2022",description:"Apache CloudStack is thrilled to share the word of the upcoming&nbsp;CloudStack European User Group Virtual Conference&nbsp;- the virtual get together for the&nbsp;European CloudStack Community. The event is taking place on&nbsp;7th April 2022, where you will be able to meet the leading CloudStack experts, users and skilful engineers from the open-source world.&nbsp;",date:"2022-03-30T00:00:00.000Z",formattedDate:"March 30, 2022",tags:[{label:"news",permalink:"/blog/tags/news"}],hasTruncateMarker:!0,authors:[{name:"Ivet Petrova",title:"PMC Member",url:"https://github.com/IvetPM",imageURL:"https://github.com/IvetPM.png",key:"ivet"}],frontMatter:{layout:"post",title:"CloudStack European User Group Virtual - April 7th, 2022",tags:["news"],authors:["ivet"],slug:"cloudstack-european-user-group-virtual"},prevItem:{title:"CloudStack Advisory on Spring4Shell (CVE-2022-22965&nbsp;and&nbsp;CVE-2022-22963)",permalink:"/blog/cloudstack-advisory-on-spring4shell-cve"},nextItem:{title:"CloudStack Integrations: LINBIT - Open-source SDS Solution",permalink:"/blog/cloudstack-integrations-linbit-open-source"}},l={authorsImageUrls:[void 0]},u=[],c={toc:u},p="wrapper";function d(e){let{components:t,...o}=e;return(0,r.kt)(p,(0,n.Z)({},c,o,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("a",{href:"/blog/cloudstack-european-user-group-virtual"},(0,r.kt)("img",{src:"/img/imported/3c8af793-da2a-41bf-be44-9ab1c5b4185c",alt:"CSEUG-Reg-2.jpg",width:"750",height:"393"})),(0,r.kt)("p",null,"Apache CloudStack is thrilled to share the word of the upcoming\xa0",(0,r.kt)("a",{href:"https://events.hubilo.com/cloudstack-european-user-group/register"},(0,r.kt)("strong",null,"CloudStack European User Group Virtual Conference")),"\xa0- the virtual get together for the\xa0",(0,r.kt)("strong",null,"European CloudStack Community"),". The event is taking place on\xa0",(0,r.kt)("strong",null,"7th April 2022"),", where you will be able to meet the leading CloudStack experts, users and skilful engineers from the open-source world.\xa0"),(0,r.kt)("p",null,"Join technical talks, user stories, new features, integrations presentations and more!"),(0,r.kt)("p",null,"Become part of the CSEUG Virtual on April 7",(0,r.kt)("sup",null,"th"),", 2022!"),(0,r.kt)("p",null,(0,r.kt)("a",{href:"https://events.hubilo.com/cloudstack-european-user-group/register",target:"_blank"},(0,r.kt)("strong",null,"REGISTER NOW"))),(0,r.kt)("hr",null),(0,r.kt)("a",{href:"/img/imported/048962db-316c-441f-8fd2-cc1e787c7009"},(0,r.kt)("img",null)),(0,r.kt)("p",null,(0,r.kt)("strong",null,"AGENDA")),(0,r.kt)("p",null,(0,r.kt)("strong",null,"09:30 - 09:45 - Welcome + CloudStack News -\xa0"),"Giles Sirett, Chairman CSEUG,\xa0 PMC member, Apache CloudStack"),(0,r.kt)("p",null,"Giles Sirett will be giving an outline of what everyone can expect for the day. Join the official event opening to learn more about the upcoming sessions, speakers and networking events. Discover also the latest news from the CloudStack Community!"),(0,r.kt)("p",null,(0,r.kt)("strong",null,"09:45- 10:30 - CloudStack with Ansible,\xa0"),"Rene Moser"),(0,r.kt)("p",null,"This call involves a brief introduction about how it all began and how the project stands today including a real-world example of how Ngine.io have managed workloads with Ansible on Exoscale."),(0,r.kt)("p",null,(0,r.kt)("strong",null,"10:40 - 11:25 - Leveraging CloudStack and Apiculus to Launch and Operate a Profitable Public Cloud Business, "),"Sunando Bhattacharya, IndiQus"),(0,r.kt)("p",null,"Learn more about the learnings of IndiQus Technologies from working with 20+ cloud operators across the globe. CloudStack has been powering numerous cloud providers globally for over a decade. In this talk, Sunando Bhattacharya, CEO of IndiQus, will be delving into the primary reasons why CSPs are preferring it over the OtherStack and how IndiQus is combining CloudStack with their platform Apiculus, to deliver a Cloud Business platform. He will also be sharing some user stories about how some of his company\u2019s customers revolutionized the cloud business in their respective countries, thereby busting some myths about the IaaS business."),(0,r.kt)("p",null,(0,r.kt)("strong",null,"11:35 - 12:20 - Building a DR Solution with CloudStack, "),"Venko Moyankov, StorPool"),(0,r.kt)("p",null,"Building a Disaster Recovery solution with KVM is not trivial. In this talk, Venko Moyankov will present how CloudStack cloud management and StorPool Storage can be used to build a multi-datacentre cloud with Disaster Recovery capabilities."),(0,r.kt)("p",null,(0,r.kt)("strong",null,"12:30 - 13:15 - VM Job Queues in CloudStack,\xa0"),"Suresh Kumar Anaparti, Software Engineer, ShapeBlue"),(0,r.kt)("p",null,"CloudStack allows various life cycle operations for a Virtual Machine (VM). It maintains queues internally, to sync and perform all these operations. This talk briefs about how job queues are maintained in CloudStack, to execute the VM operations, followed by a demo."),(0,r.kt)("p",null,(0,r.kt)("strong",null,"13:25 - 13:55 - Security in Shared Networks with VMware NSX, "),"Alireza Eskandari, Afranet"),(0,r.kt)("p",null,"Shared networks security can be a serious concern if different untrusted tenants use it together. Alireza will discuss Afranet\u2019s solution for IP and DHCP spoofing for these networks on VMware environments which are managed by CloudStack."),(0,r.kt)("p",null,(0,r.kt)("strong",null,"14:05 - 14:50 - Integrating CyberSecurity Active Measures into CloudStack Kubernetes Service, "),"Jesus Escolar, Exelerys"),(0,r.kt)("p",null,"There is a constant rise in Cloud Native adoption. Most companies are evaluating how to migrate to newer, flexible, and automated platforms. Cloud-Native provides the answer, as well as the complications. Cloud-Native solutions are building themselves alone across the business, but who's securing them? Jesus will discuss the evolution of infrastructure solutions to Cloud Native, how can they be secured on CloudStack, what opensource security options are available today for CloudStack and where the future is leading towards Cloud Native security for CloudStack."),(0,r.kt)("p",null,(0,r.kt)("strong",null,"15:00 - 15:30 - Boosting I/O Performance with KVM io_uring, "),"Wido den Hollander, CLDIN B.V.",(0,r.kt)("u",null)),(0,r.kt)("p",null,"Storage performance is becoming much more important. KVM io_uring attempts to bring the I/O performance of a virtual machine to almost the same level as bare metal. Apache CloudStack has support for io_uring since version 4.16. Wido will show the difference in performance io_uring brings to the table."),(0,r.kt)("p",null,(0,r.kt)("strong",null,"15:40 - 16:10 - Backup and Restore VMs based on KVM, "),"Quentin Roccia & Joffrey Luangsaysana, Dimsi"),(0,r.kt)("p",null,"Dimsi has developed a backup solution for Virtual Machines based on KVM hypervisors. Every layer of the product uses Open Source libraries or components (Python, VueJS, Celery, Borg Backup, Redis, Socketio, Flask). There is no agent needed on the VMs. Dimsi has implemented a feature to group the hosts based on their use (CloudStack Hosts or Management Hosts) and apply specific policies to the groups. In the CloudStack context, this product can help you backup and restore all your VMs easily if the hypervisors are KVM-based. Moreover, restoring the VMs is effortless because KVM and CloudStack use the same id for the VM disks, so no need to hack the database to match them."),(0,r.kt)("p",null,(0,r.kt)("strong",null,"16:20 - 17:05 - A Kubernetes CAPI Provider for Apache CloudStack, "),"Peter (Motyka) Motykowski, Sr. Software Development Manager - Customer Engineering at Amazon Web Services (AWS)"),(0,r.kt)("p",null,'Discover the new Kubernetes CAPI (Cluster-API) provider for Apache CloudStack "CAPC", enabling you to manage a range of Kubernetes clusters across Apache CloudStack and other supported infrastructure providers!CAPI is a Kubernetes sub-project focused on providing declarative APIs and tooling to simplify provisioning, upgrading, and operating multiple Kubernetes clusters. Started by the Kubernetes SIG (Special Interest Group) Cluster Lifecycle, the CAPI project uses Kubernetes-style APIs and patterns to automate cluster lifecycle management for platform operators. CAPI relies on infrastructure providers to provision the underlying infrastructure components.',(0,r.kt)("br",null),"In this talk, you will find out more about the newly developed provider, its capabilities, and how you can benefit from it!"),(0,r.kt)("p",null,(0,r.kt)("strong",null,"17:15 - 17:45 - Expose Router VM Statistics to Customers, "),"Sina Kashipazha, Leaseweb"),(0,r.kt)("p",null,"In recent years, some of Leaseweb\u2019s customers complained about the router VM resource usage and its availability. This made the company think that it would be nice to expose router VM statistics to the customers using the Prometheus format. In that way, they can set up their monitoring system and have more visibility over their network. Although it is still under development, Leaseweb thought it would be nice to discuss the project with the community members and gather feedback."),(0,r.kt)("p",null,(0,r.kt)("strong",null,"17:45 - 19:00 - Networking and Beers")),(0,r.kt)("hr",null),(0,r.kt)("p",null,(0,r.kt)("a",{href:"https://events.hubilo.com/cloudstack-european-user-group/register",target:"_blank"},(0,r.kt)("strong",null,"REGISTER NOW"))),(0,r.kt)("hr",null),(0,r.kt)("p",null,(0,r.kt)("strong",null,"LEARN MORE ABOUT THE SPEAKERS:")),(0,r.kt)("p",null,(0,r.kt)("strong",null,"Giles Sirett")),(0,r.kt)("p",null,"Giles is a committer, PMC member of the Apache CloudStack project and Chairman of the European CloudStack User Group. He is also CEO & founder of ShapeBlue, the leading independent CloudStack integrator & consultancy. He has worked with many high-profile organisations, helping them strategise, design and implement CloudStack based clouds. Giles is an active contributor to the Apache CloudStack project and has spoken at all CloudStack Collaboration conferences, Linuxcon, and other events."),(0,r.kt)("p",null,(0,r.kt)("strong",null,"Rene Moser")),(0,r.kt)("p",null,"Ren\xe9 Moser is a software engineer at Ngine.io, an engineering cloud computing company that focuses on integration, automation, and scaling."),(0,r.kt)("p",null,(0,r.kt)("strong",null,"Sunando Bhattacharya")),(0,r.kt)("p",null,"Sunando Bhattacharya is the CEO and Co-Founder of IndiQus Technologies. They are a fast-growing Cloud solutions company that works with Service Providers (Telcos, ISPs and Datacenter providers) globally and helps them set up and run an in-country cloud business. Some of their customers are companies like Airtel, Vodafone, Ooredoo, Sri Lanka Telecom, and Datahub."),(0,r.kt)("p",null,(0,r.kt)("strong",null,"Venko Moyankov")),(0,r.kt)("p",null,"Venko Moyankov is a solution architect at StorPool Storage, a fully managed data storage solution that transforms commodity hardware into a shared, powerful, highly available, and reliable storage system. He has experience with managing large virtualizations, working in telcos, designing and supporting the infrastructure of large enterprises. In the last year, his focus has been on helping companies globally to build the best storage solution according to their needs and projects."),(0,r.kt)("p",null,(0,r.kt)("strong",null,"Suresh Kumar Anaparti")),(0,r.kt)("p",null,"Suresh Anaparti is a software architect at ShapeBlue, the largest independent integrator of CloudStack technologies globally. He has over 15 years of end-to-end product development experience in Cloud Infrastructure, Telecom and Geospatial technologies. He is an active Apache CloudStack committer/contributor and is currently working with ShapeBlue. He has been working on CloudStack development for more than 5 years."),(0,r.kt)("p",null,(0,r.kt)("strong",null,"\u0410lireza Eskendari")),(0,r.kt)("p",null,"Alireza Eskandari is the manager of cloud services at Afranet, one of the leading Iranian internet services providers. His role involves directing a team of specialists to develop and manage value-added services on top of data center infrastructure, such as cloud services (Iaas & PaaS), CDN, Web Hosting. etc. Afranet was established in 1996 with the aim of developing the Internet and e-commerce in the country and entered the OTC market of Iran in 1995."),(0,r.kt)("p",null,(0,r.kt)("strong",null,"Jesus Escolar")),(0,r.kt)("p",null,"Jesus Escolar is the CEO at EXELERYS, a next-generation cybersecurity and cyber intelligence start-up for professional services, trusted advisory, consulting & education, focused on cutting-edge multi-vendor solutions. As the CEO for EXELERYS, his role is to develop and promote all the different business areas of the company and build success with vendors, partners and customers engagements. His role also involves creating strong alliances within the technology ecosystem, and augment the footprint presence with our solutions across EMEA. He also aids his team with vision, direction and business goals."),(0,r.kt)("p",null,(0,r.kt)("strong",null,"Wido den Hollander")),(0,r.kt)("p",null,"Wido den Hollander is the CTO of CLouDinfra, an infrastructure company offering total Webhosting solutions. CLDIN provides datacenter, IP and virtualization services for the companies within TWS. Wido den Hollander is a PMC member of the Apache CloudStack Project and a Ceph expert. He started with CloudStack 9 years ago. What attracted his attention is the simplicity of CloudStack and the fact that it is an open-source solution. During the years Wido became a contributor, a PMC member and he was a VP of the project for a year. He is one of our most active members, who puts a lot of efforts to keep the project active and transforming it into a turnkey solution for cloud builders."),(0,r.kt)("p",null,(0,r.kt)("strong",null,"Quentin Roccia\xa0")),(0,r.kt)("p",null,"Senior DevOps engineer, Cloud enabler. Quentin is in charge of DIMSI custom developments on top of Apache CloudStack deployment: customer portal, backup solutions. On a daily basis, he helps our customers to build and improve DevOps strategy, including GitLab, CloudStack APIs and Python devs. Quentin is the main contributor to KVM backup solution"),(0,r.kt)("p",null,(0,r.kt)("strong",null,"Joffrey Luangsaysana \xa0")),(0,r.kt)("p",null,"Senior Cloud Engineer, Platform specialist. Joffrey is responsible for our core platform, including compute, storage, networking, and Apache CloudStack services. He is focused on providing maximum performance and uptime to our customers, and is dedicated to guaranteeing fast and reliable customer VM\u2019s backup."),(0,r.kt)("p",null,(0,r.kt)("strong",null,"Peter (Motyka) Motykowski")),(0,r.kt)("p",null,"Peter (Motyka) Motykowski is a Sr. Software Development Manager - Customer Engineering at Amazon Web Services (AWS). He is leading the AWS Professional Services teams focused on bringing Amazon-class engineering to customers. In the last 4 years, he has been part of the AWS team and previously worked for other enterprises among which are Google and Netflix. His colleagues describe him as an outstanding technologist bringing immense value to any organization of which he has been part.\xa0"),(0,r.kt)("p",null,(0,r.kt)("strong",null,"Sina Kashipazha")),(0,r.kt)("p",null,"Sina Kashipazha is a software engineer at Leaseweb, a leading Infrastructure-as-a-Service provider serving a worldwide portfolio of 20,000 customers ranging from SMBs to Enterprises. The services Leaseweb offer include Public Cloud, Private Cloud, Hybrid Hosting, Colocation, Content Delivery Network, Cyber Security Services, and Dedicated Servers supported by customer service and technical support."),(0,r.kt)("p",null,"\xa0"),(0,r.kt)("p",null,(0,r.kt)("strong",null,"The event will happen on April 7th, starting from 09:30 CET to 19:00 CET.")),(0,r.kt)("p",null,"\xa0"))}d.isMDXComponent=!0}}]);