The document provides an overview of Node.js and how it compares to traditional multi-threaded servers. Node.js is a non-blocking event-driven platform built on Chrome's V8 JavaScript engine that executes JavaScript on the server. Unlike multi-threaded servers that spawn a new thread for each connection blocking the server, Node.js uses an event-driven model where I/O operations don't block execution allowing it to handle many connections concurrently and efficiently save on I/O costs. The document then outlines an agenda to discuss coding with Node.js, using it on Cloud Foundry, and a demo application.
Heard about Cloud Foundry? Already a Spring, Grails, Ruby, Node.js, Scala, or generalist programmer looking to understand what Cloud Foundry, the open source PaaS from VMware, means to you? Are you an architect trying to understand where PaaS fits it, and what it brings to the table? If you answered "yes" to any of those questions, then join the experts in this bootcamp to Cloud Foundry.
Heard about Cloud Foundry? Already a Spring, Grails, Ruby, Node.js, Scala, or generalist programmer looking to understand what Cloud Foundry, the open source PaaS from VMware, means to you? Are you an architect trying to understand where PaaS fits it, and what it brings to the table? If you answered "yes" to any of those questions, then join the experts in this bootcamp to Cloud Foundry.
This session provides an overview of how to build and deploy Spring-based applications to the Cloud Foundry platform.
The session will cover application configuration parameters, binding services to your application, deployment options using using STS, the vmc command tool, as well as the new Apache Maven plugin for Cloud Foundry. Gunnar will demonstrate how to deploy applications to both micro and public Cloud Foundry and will also show how debugging works with Cloud Foundry and how you can inspect services remotely using Caldecott.
Gunnar will also show various options to keep your War-files deployable to both Cloud Foundry and stand-alone Servlet Containers using auto-reconfiguration, the cloud namespace, and Spring 3.1 profiles.
Lastly, he will give a high-level overview how you can use Cloud Foundry together with Spring Integration in order to create scalable Spring applications.
Autoscaling Distributed System with BOSH (Cloud Foundry Summit 2014)VMware Tanzu
Technical Track presented by Yudai Iwasaki, Lead Engineer, Software Innovation Center, NTT.
Yudai Iwasaki is a research engineer at NTT Software Innovation Center. He is a core member of the development team of Cloudn PaaS, which is a public PaaS solution provided by NTT Communications, and is leading the development of their deployment system for Cloud Foundry. He is also the leader of community relationships at NTT and is a member of the Japan Cloud Foundry Group, in which capacity he gives lectures on the structure of Cloud Foundry for Japanese Cloud Foundry developers. He is a developer of Nise BOSH, which is a light weight BOSH emulator, BOSH CloudStack CPI, and BOSH AutoScaler.
Build Scalable Internet of Things Apps using Cloud Foundry, Bluemix & CloudantAnimesh Singh
5 billion people vs 50 billion devices connected to the Internet by 2025 - How can we build application to handle this explosive growth in Internet of Things using Cloud Foundry, Bluemix and Cloudant
Cloud foundry Docker Openstack - Leading Open Source TriumvirateAnimesh Singh
OpenStack, Docker, and Cloud Foundry are the three most popular open source projects according to a recent cloud software survey. Docker has taken the cloud world by storm as a revolutionary way to not only run isolated application containers, but also to package them. But how does Docker fit into the paradigm of IaaS and PaaS? More specifically, how does it integrate with OpenStack and Cloud Foundry, the world's most popular infrastructure and platform service implementations? OpenStack, Docker, and Cloud Foundry are the three most popular open source projects according to a recent cloud software survey. Docker has taken the cloud world by storm as a revolutionary way to not only run isolated application containers, but also to package them. But how does Docker fit into the paradigm of IaaS and PaaS? More specifically, how does it integrate with OpenStack and Cloud Foundry, the world's most popular infrastructure and platform service implementations?
These charts from our OpenStack Summit talk Vancouver talk how the three leading open source cloud technologies are evolving to work together to support next generation workloads!
IBM Bluemix OpenWhisk: Cloud Foundry Summit 2016, Frankfurt, Germany: The Fut...OpenWhisk
Learn more about the IBM Bluemix OpenWhisk, a serverless event-driven compute platform, which quickly executes application logic in response to events or direct invocations from web/mobile apps or other endpoints.
This presentation covers both the Cloud Foundry Elastic Runtime (known by many as just "Cloud Foundry") as well as the Operations Manager (known by many as BOSH). For each, the main components are covered with interactions between them.
Containerized DBs in a Machine Data environment with Crate.ioClaus Matzinger
Predictive analytics, Internet of Things, Industry 4.0 - everybody has heard them at least once, but what do real installations look like? How can containerized Microservices help deployment and increase productivity? Claus from Crate.io will answer any and all of these questions and show real world examples with a stack based on Raspberry Pis, Grafana, Docker, and Rust.
Becoming a Node.js Ninja on Cloud Foundry - Open Tour LondonAndy Piper
Presentation from the Cloud Foundry Open Tour, London, May 1 2012 - the concepts behind node.js, some code examples, and some sample applications which run on Cloud Foundry. Code samples at http://github.com/rajaraodv
Concurrent Programming with Ruby and Tuple Spacesluccastera
Ruby threads are limited due to the Global Interpreter Lock. Therefore, the best way to do parallel computing with Ruby is to use multiple processes but how do you get these processes to communicate?
This session will provide some strategies for handling multi-process communication in Ruby, with a focus on the use of TupleSpaces. A TupleSpace provides a repository of tuples that can be accessed concurrently to implement a Blackboard system. Ruby ships with a built-in implementation of a TupleSpace with the Rinda library.
During the session, Luc will demonstrate how to use Rinda and will highlight other libraries/projects that facilitate interprocess communication and parallel computing in Ruby.
PLNOG 17 - Krzysztof Wilczyński - EVPN – zwycięzca w wyścigu standardów budow...PROIDEA
W wyścigu wielu technologii i standardów budowy sieci Data Center oraz Data Center Interconnect, EVPN zdaje się być tym, który wysunął się na prowadzenie. W ramach sesji odpowiemy sobie na pytanie gdzie EVPN jest w tej chwili na tle innych technologii, gdzie go stosować, na co zwracać uwagę podczas wdrożenia.
This presentation explain how the Object-Relational Mapping layer provided by the OMG DDS standard can be used in order to integrate data distribution into your favorite Object Oriented Programming Language, such as Java, C++, C#.
This session provides an overview of how to build and deploy Spring-based applications to the Cloud Foundry platform.
The session will cover application configuration parameters, binding services to your application, deployment options using using STS, the vmc command tool, as well as the new Apache Maven plugin for Cloud Foundry. Gunnar will demonstrate how to deploy applications to both micro and public Cloud Foundry and will also show how debugging works with Cloud Foundry and how you can inspect services remotely using Caldecott.
Gunnar will also show various options to keep your War-files deployable to both Cloud Foundry and stand-alone Servlet Containers using auto-reconfiguration, the cloud namespace, and Spring 3.1 profiles.
Lastly, he will give a high-level overview how you can use Cloud Foundry together with Spring Integration in order to create scalable Spring applications.
Autoscaling Distributed System with BOSH (Cloud Foundry Summit 2014)VMware Tanzu
Technical Track presented by Yudai Iwasaki, Lead Engineer, Software Innovation Center, NTT.
Yudai Iwasaki is a research engineer at NTT Software Innovation Center. He is a core member of the development team of Cloudn PaaS, which is a public PaaS solution provided by NTT Communications, and is leading the development of their deployment system for Cloud Foundry. He is also the leader of community relationships at NTT and is a member of the Japan Cloud Foundry Group, in which capacity he gives lectures on the structure of Cloud Foundry for Japanese Cloud Foundry developers. He is a developer of Nise BOSH, which is a light weight BOSH emulator, BOSH CloudStack CPI, and BOSH AutoScaler.
Build Scalable Internet of Things Apps using Cloud Foundry, Bluemix & CloudantAnimesh Singh
5 billion people vs 50 billion devices connected to the Internet by 2025 - How can we build application to handle this explosive growth in Internet of Things using Cloud Foundry, Bluemix and Cloudant
Cloud foundry Docker Openstack - Leading Open Source TriumvirateAnimesh Singh
OpenStack, Docker, and Cloud Foundry are the three most popular open source projects according to a recent cloud software survey. Docker has taken the cloud world by storm as a revolutionary way to not only run isolated application containers, but also to package them. But how does Docker fit into the paradigm of IaaS and PaaS? More specifically, how does it integrate with OpenStack and Cloud Foundry, the world's most popular infrastructure and platform service implementations? OpenStack, Docker, and Cloud Foundry are the three most popular open source projects according to a recent cloud software survey. Docker has taken the cloud world by storm as a revolutionary way to not only run isolated application containers, but also to package them. But how does Docker fit into the paradigm of IaaS and PaaS? More specifically, how does it integrate with OpenStack and Cloud Foundry, the world's most popular infrastructure and platform service implementations?
These charts from our OpenStack Summit talk Vancouver talk how the three leading open source cloud technologies are evolving to work together to support next generation workloads!
IBM Bluemix OpenWhisk: Cloud Foundry Summit 2016, Frankfurt, Germany: The Fut...OpenWhisk
Learn more about the IBM Bluemix OpenWhisk, a serverless event-driven compute platform, which quickly executes application logic in response to events or direct invocations from web/mobile apps or other endpoints.
This presentation covers both the Cloud Foundry Elastic Runtime (known by many as just "Cloud Foundry") as well as the Operations Manager (known by many as BOSH). For each, the main components are covered with interactions between them.
Containerized DBs in a Machine Data environment with Crate.ioClaus Matzinger
Predictive analytics, Internet of Things, Industry 4.0 - everybody has heard them at least once, but what do real installations look like? How can containerized Microservices help deployment and increase productivity? Claus from Crate.io will answer any and all of these questions and show real world examples with a stack based on Raspberry Pis, Grafana, Docker, and Rust.
Becoming a Node.js Ninja on Cloud Foundry - Open Tour LondonAndy Piper
Presentation from the Cloud Foundry Open Tour, London, May 1 2012 - the concepts behind node.js, some code examples, and some sample applications which run on Cloud Foundry. Code samples at http://github.com/rajaraodv
Concurrent Programming with Ruby and Tuple Spacesluccastera
Ruby threads are limited due to the Global Interpreter Lock. Therefore, the best way to do parallel computing with Ruby is to use multiple processes but how do you get these processes to communicate?
This session will provide some strategies for handling multi-process communication in Ruby, with a focus on the use of TupleSpaces. A TupleSpace provides a repository of tuples that can be accessed concurrently to implement a Blackboard system. Ruby ships with a built-in implementation of a TupleSpace with the Rinda library.
During the session, Luc will demonstrate how to use Rinda and will highlight other libraries/projects that facilitate interprocess communication and parallel computing in Ruby.
PLNOG 17 - Krzysztof Wilczyński - EVPN – zwycięzca w wyścigu standardów budow...PROIDEA
W wyścigu wielu technologii i standardów budowy sieci Data Center oraz Data Center Interconnect, EVPN zdaje się być tym, który wysunął się na prowadzenie. W ramach sesji odpowiemy sobie na pytanie gdzie EVPN jest w tej chwili na tle innych technologii, gdzie go stosować, na co zwracać uwagę podczas wdrożenia.
This presentation explain how the Object-Relational Mapping layer provided by the OMG DDS standard can be used in order to integrate data distribution into your favorite Object Oriented Programming Language, such as Java, C++, C#.
As the data center network scales out (both through the addition of more servers per pod and the interconnection of more pods per data center), conventional Ethernet designs need to be modified. This section will consider the evolution from conventional network design to several
emerging standards that will support higher scalability and more complex network topologies.
Basics of the Highly Available Distributed Databases - teowaki - javier ramir...javier ramirez
Basic concepts of distributed systems, such as consensus, gossip and infection protocols, vector clocks, sharding storage, so you can create highly available distributed systems
Everything you always wanted to know about highly available distributed datab...Codemotion
Can you imagine a database that stands as much traffic as you want, adding and removing nodes automatically, working interruption-free even if a volcano starts spitting lava over your data centres? That's the promise of distributed systems like Cassandra, Voldemort or Riak. But, how do they do it? In this talk I will tell you the basics of distributed databases. Come to my talk if you want to learn about CAP, BASE, incremental scalability, replication or consensus. I will also explain geeky things like gossip, vector clocks, hinted handoff, or entropy.
HUGFR : Une infrastructure Kafka & Storm pour lutter contre les attaques DDoS...Modern Data Stack France
Presentation d'OVH lors du Hadoop User Group du 6 octobre à Paris.
• Talk #4: Une infrastructure Kafka & Storm pour lutter contre les attaques DDoS en temps-réel par Steven Le Roux de la société OVH.
http://hugfrance.fr/hug_paris_6_oct_cloudera/
Kubernetes has many ways to scale your workloads, most of what we hear about is scaling our cluster up with either with vm sets or autoscaling groups. There is another way, in this talk we will look at virtual kubelet. Virual Kubelet will allow us to talk to a cloud providers container as a service platform like ACI, fargate or ECI. We will deep dive into how you can scale your applications across virtual kubelet. One issue is the kubernetes service type has is scaling to zero due to the way routing to the pod happens if there is no pod for the service to route too. Scaling our applications to zero is just as important and scaling up. We will look at projects that integrate with the horizontal pod autoscaler that fix this issue. Allowing us to not only scale our applications up but as easily down to make our cluster truly elastic.
KubeCon China 2019 - Building Apps with Containers, Functions and Managed Ser...Patrick Chanezon
Cloud native applications are composed of many technologies and components, but three canonical abstraction emerged in the past few years that help developers structure their architecture: container, functions responding to events, and managed services.
This talk will explain how to develop (Docker, local Kubernetes, virtual Kubelet, OpenFaaS), deploy (managed Kubernetes, functions and services) and package (CNAB specification and tooling) applications using these three components and look at not only deployment workflows but also at day 2 concerns that a developer would need to consider in the cloud native landscape.
We will demo every topic and a Github repository will be available for developers to reproduce the demos and learn at their own pace.
Patrick Chanezon and Scott Coulton
Dockercon 2019 Developing Apps with Containers, Functions and Cloud ServicesPatrick Chanezon
Cloud native applications are composed of containers, serverless functions and managed cloud services.
What is the best set of tools on your desktop to provide a rapid, iterative development experience and package applications using these three components?
This hand-on talk will explain how you can complement Docker Desktop, with it’s local Docker engine and Kubernetes cluster, with open source tools such as the Virtual Kubelet, Open Service Broker, the Gloo hybrid app gateway, Draft, and others, to build the most productive development inner-loop for these type of applications.
It will also cover how you can use the Cloud Native Application Bundle (CNAB) format and it’s implementation in the Docker app experimental tool to package your application and manage it with container supply chain tooling such as Docker Hub.
GIDS 2019: Developing Apps with Containers, Functions and Cloud ServicesPatrick Chanezon
Cloud native applications are increasingly composed of containers, serverless functions responding to events and managed cloud services. What is the best workflow and set of tools to provide a rapid, iterative development experience and to package applications using these three components?
This hand-on talk will compare and contrast several sets of tools and their associated workflows:
Using Docker Desktop, with its local Docker engine and Kubernetes cluster, with open source tools such as the Virtual Kubelet, or the Gloo hybrid app gateway, to build the most productive development inner-loop for these type of applications
OpenFaaS, Fn, or Nuclio open source serverless framework to run functions in containers locally
Telepresence to run a container locally, connected to a remote cluster
Helm and Draft
Knative
The talk will also cover how you can use the Cloud Native Application Bundle (CNAB) format and tools to package your applications and share them using a container registry.
Patrick Chanezon, un des pionniers du Cloud chez Google, VMware, Microsoft et Docker, vous raconte la révolution des conteneurs logiciels et comment certains concepts du taoïsme, wei-wu-wei, "agir sans agir", et ziran, naturel, ou spontanéïté, permettent d'en mieux cerner les enjeux.
Les conteneurs accélèrent l'adoption du Cloud en entreprise, avec des architectures hybride et multi cloud, la mise en place de démarches agiles et DevOps pour moderniser les applications existantes et réduire les coûts d'infrastructure, et permettent de nouveaux cas d'utilisation dans l'internet des objets et l'intelligence artificielle.
Moby is an open source project providing a "LEGO set" of dozens of components, the framework to assemble them into specialized container-based systems, and a place for all container enthusiasts to experiment and exchange ideas.
One of these assemblies is Docker CE, an open source product that lets you build, ship, and run containers.
This talk will explain how you can leverage the Moby project to assemble your own specialized container-based system, whether for IoT, cloud or bare metal scenarios.
We will cover Moby itself, the framework, and tooling around the project, as well as many of it’s components: LinuxKit, InfraKit, containerd, SwarmKit, Notary.
Then we will present a few use cases and demos of how different companies have leveraged Moby and some of the Moby components to create their own container-based systems.
Video at https://www.youtube.com/watch?v=kDp22YkD6WY
Microsoft Techsummit Zurich Docker and MicrosoftPatrick Chanezon
Docker and Microsoft have been collaborating both in open source and through their commercial partnership to bring the benefits of Docker Windows and Linux containers to Azure Enterprise customers. Docker’s container platform, Docker Enterprise Edition, is used to modernize traditioal applications, and move them to Azure, as well as to develop new cloud native applications using microservices architecture, bringing agility to developers and control to IT Pros. This talk will cover the latest developments in Docker’s container platform with planned support for Kubernetes in Docker for Windows, and Docker Enterprise Edition for Azure, Docker for Azure Stack to enable hybrid cloud deployments, Windows containers, Linux containers on Windows.
Develop and deploy Kubernetes applications with Docker - IBM Index 2018Patrick Chanezon
Docker Desktop and Enterprise Edition now both include Kubernetes as an optional orchestration component. This talk will explain how to use Docker Desktop (Mac or Windows) to develop and debug a cloud native application, then how Docker Enterprise Edition helps you deploy it to Kubernetes in production.
The Docker Way: modernize traditional applications without action (wu-wei) and create new cloud native microservices applications with naturalness (ziran).
This talk also provides a summary of all the DockerCon EU 2017 announcements: Kubernetes now supported in Docker, MTA, IBM partnership.
Building specialized container-based systems with Moby: a few use cases
This talk will explain how you can leverage the Moby project to assemble your own specialized container-based system, whether for IoT, cloud or bare metal scenarios. We will cover Moby itself, the framework, and tooling around the project, as well as many of it’s components: LinuxKit, InfraKit, containerd, SwarmKit, Notary. Then we will present a few use cases and demos of how different companies have leveraged Moby and some of the Moby components to create their own container-based systems.
Docker Cap Gemini CloudXperience 2017 - la revolution des conteneurs logicielsPatrick Chanezon
Si vous avez raté le début : Patrick Chanezon, un des pionniers du Cloud chez Google, VMware, Microsoft et Docker, vous raconte la révolution des conteneurs logiciels en quelques films ; comment ils accélèrent l'adoption du Cloud en entreprise, avec des architectures hybride et multi, la mise en place de démarches agiles et DevOps pour moderniser les applications existantes et réduire les coûts d'infrastructure, et permettent de nouveaux cas d'utilisation dans l'internet des objets et l'intelligence artificielle.
En bref, comment expliquer la stratégie des opérateurs du Cloud avec des films de science- fiction ? C’est le défi que va relever Patrick Chanezon, évangéliste chez Docker.
Docker moves very fast, with an edge channel released every month and a stable release every 3 months. Patrick will talk about how Docker introduced Docker EE and a certification program for containers and plugins with Docker CE and EE 17.03 (from March), the announcements from DockerCon (April), and the many new features planned for Docker CE 17.05 in May.
This talk will be about what's new in Docker and what's next on the roadmap
Oscon 2017: Build your own container-based system with the Moby projectPatrick Chanezon
Build your own container-based system
with the Moby project
Docker Community Edition—an open source product that lets you build, ship, and run containers—is an assembly of modular components built from an upstream open source project called Moby. Moby provides a “Lego set” of dozens of components, the framework for assembling them into specialized container-based systems, and a place for all container enthusiasts to experiment and exchange ideas.
Patrick Chanezon and Mindy Preston explain how you can leverage the Moby project to assemble your own specialized container-based system, whether for IoT, cloud, or bare-metal scenarios. Patrick and Mindy explore Moby’s framework, components, and tooling, focusing on two components: LinuxKit, a toolkit to build container-based Linux subsystems that are secure, lean, and portable, and InfraKit, a toolkit for creating and managing declarative, self-healing infrastructure. Along the way, they demo how to use Moby, LinuxKit, InfraKit, and other components to quickly assemble full-blown container-based systems for several use cases and deploy them on various infrastructures.
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
Neuro-symbolic is not enough, we need neuro-*semantic*Frank van Harmelen
Neuro-symbolic (NeSy) AI is on the rise. However, simply machine learning on just any symbolic structure is not sufficient to really harvest the gains of NeSy. These will only be gained when the symbolic structures have an actual semantics. I give an operational definition of semantics as “predictable inference”.
All of this illustrated with link prediction over knowledge graphs, but the argument is general.
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
JMeter webinar - integration with InfluxDB and GrafanaRTTS
Watch this recorded webinar about real-time monitoring of application performance. See how to integrate Apache JMeter, the open-source leader in performance testing, with InfluxDB, the open-source time-series database, and Grafana, the open-source analytics and visualization application.
In this webinar, we will review the benefits of leveraging InfluxDB and Grafana when executing load tests and demonstrate how these tools are used to visualize performance metrics.
Length: 30 minutes
Session Overview
-------------------------------------------
During this webinar, we will cover the following topics while demonstrating the integrations of JMeter, InfluxDB and Grafana:
- What out-of-the-box solutions are available for real-time monitoring JMeter tests?
- What are the benefits of integrating InfluxDB and Grafana into the load testing stack?
- Which features are provided by Grafana?
- Demonstration of InfluxDB and Grafana using a practice web application
To view the webinar recording, go to:
https://www.rttsweb.com/jmeter-integration-webinar
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
In today's fast-changing business world, Companies that adapt and embrace new ideas often need help to keep up with the competition. However, fostering a culture of innovation takes much work. It takes vision, leadership and willingness to take risks in the right proportion. Sachin Dev Duggal, co-founder of Builder.ai, has perfected the art of this balance, creating a company culture where creativity and growth are nurtured at each stage.
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Jeffrey Haguewood
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on the notifications, alerts, and approval requests using Slack for Bonterra Impact Management. The solutions covered in this webinar can also be deployed for Microsoft Teams.
Interested in deploying notification automations for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
In this insightful webinar, Inflectra explores how artificial intelligence (AI) is transforming software development and testing. Discover how AI-powered tools are revolutionizing every stage of the software development lifecycle (SDLC), from design and prototyping to testing, deployment, and monitoring.
Learn about:
• The Future of Testing: How AI is shifting testing towards verification, analysis, and higher-level skills, while reducing repetitive tasks.
• Test Automation: How AI-powered test case generation, optimization, and self-healing tests are making testing more efficient and effective.
• Visual Testing: Explore the emerging capabilities of AI in visual testing and how it's set to revolutionize UI verification.
• Inflectra's AI Solutions: See demonstrations of Inflectra's cutting-edge AI tools like the ChatGPT plugin and Azure Open AI platform, designed to streamline your testing process.
Whether you're a developer, tester, or QA professional, this webinar will give you valuable insights into how AI is shaping the future of software delivery.
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
2. P@ in a nutshell
• French, based in San Francisco
• Senior Director, Developer Relations,VMware
• Software Plumber, API guy, mix of Enterprise and
Consumer
• 18 years writing software, backend guy with a
taste for javascript
• 2 y Accenture (Notes guru), 3 y Netscape/AOL
(Servers, Portals), 5 y Sun (ecommerce, blogs,
Portals, feeds, open source)
• 6 years at Google, API guy (first hired, helped start the
team)
• Adwords, Checkout, Social, HTML5, Cloud
Wednesday, March 28, 12
3. Sketching Things
Slender clouds. On the pavilion a small rain.
Noon, but I’m too lazy to open the far cloister.
I sit looking at moss so green my clothes are soaked with color.
Wang Wei (699-759)
3
Wednesday, March 28, 12
4. Taking a Nap by a Mountain Window
Resting my body in a monk’s cloud chamber, my dreams relax.
Pine trees and cranes rise between screen and pillow.
A beautiful pheasant makes a long song.
My hand pushes the window, and the mountain fill my eyes.
Zhu Yunming (1461-1527)
4
Wednesday, March 28, 12
5. Looking for the Hermit and Not Finding Him
Beneath a pine I question a boy.
He says, “Master has gone to gather herbs somewhere on the
mountain
but who knows where? The clouds are deep.”
Jiao Dao (778-841)
5
Wednesday, March 28, 12
6. Looking for the Hermit and Not Finding Him
Lu mountain stands beside the Southern Dipper
In clouds reaching silken like a nine-panelled screen
With its shadows in a crystal lake deepening the green water.
The Golden Gate opens into two mountain ranges.
Li Bai (701-762)
6
Wednesday, March 28, 12
7. Agenda
1. About Node.js
• Internal working of Node.js
• Buzz around Node.js
• Who is using it
• What kind of apps are being built
2. Coding in Node.js
• Sync v/s Async coding (Callbacks)
• Classes & Modules (CommonJS)
• Node.js EventEmitters
• npm & package.json
3. Node.js & Cloud Foundry (w/ demo)
• Hello World app in Cloud Foundry
• Using Sticky Sessions
• CloudFoundry Module & connecting to Redis, MongoDB etc.
• Express.js (RESTful) app
• Socket.io + Express.js (Real-time) app
4. Final demo
• An sample app that uses concepts & modules talked above
7
Wednesday, March 28, 12
8. About Node.js
Node.js is a non-blocking, event-driven I/O platform that is built on
Google Chrome’s v8 engine.
- It is ~80% C/C++ & ~20% JS (APIs)
- Uses CommonJS module system.
- Executes JavaScript on the server
- Built by Ryan Dahl
- Sponsored by Joyent
Ryan Dahl
(Node.js creator)
8
Wednesday, March 28, 12
9. What is the biggest advantage of Node.js?
Biggest thing Node.js brings to the table
(other than JS) is savings in I/O cost
9
Wednesday, March 28, 12
10. The cost of I/O
http://blog.mixu.net/2011/02/01/understanding-the-node-js-event-loop/
10
Wednesday, March 28, 12
11. So how does Node.js save I/O cost?
Node.js saves I/O cost by implementing
Non-blocking, event driven I/O model
11
Wednesday, March 28, 12
12. Event-driven, non-blocking I/O platform/server
What exactly is a event-driven, non-blocking server?
How is it different from a multi-threaded server?
Multi-threaded blocking server
v/s
Event-driven, non-blocking server
12
Wednesday, March 28, 12
13. Multi-threaded server - Threads are spawned for every connection
DB
FS
Multi threaded
server
T Thread
13
Wednesday, March 28, 12
14. Multi-threaded server - Threads are spawned for every connection
User1
DB
FS
Multi threaded
server
T Thread
13
Wednesday, March 28, 12
15. Multi-threaded server - Threads are spawned for every connection
User1 i/o request
DB
FS
Multi threaded
server
T Thread
13
Wednesday, March 28, 12
16. Multi-threaded server - Threads are spawned for every connection
User1 i/o request
T1
DB
FS
Multi threaded
server
T Thread
13
Wednesday, March 28, 12
17. Multi-threaded server - Threads are spawned for every connection
User1 i/o request
T1
DB
Blocking
FS
Multi threaded
server
T Thread
13
Wednesday, March 28, 12
18. Multi-threaded server - Threads are spawned for every connection
User1 i/o request
T1
DB
User2
Blocking
FS
Multi threaded
server
T Thread
13
Wednesday, March 28, 12
19. Multi-threaded server - Threads are spawned for every connection
User1 i/o request
T1
DB
User2 i/o request
Blocking
FS
Multi threaded
server
T Thread
13
Wednesday, March 28, 12
20. Multi-threaded server - Threads are spawned for every connection
User1 i/o request
T1
DB
User2 i/o request T2
Blocking
FS
Multi threaded
server
T Thread
13
Wednesday, March 28, 12
21. Multi-threaded server - Threads are spawned for every connection
User1 i/o request
T1
DB
User2 i/o request T2
Blocking
User3
Refreshes 2 times
FS
Multi threaded
server
T Thread
13
Wednesday, March 28, 12
22. Multi-threaded server - Threads are spawned for every connection
User1 i/o request
T1
DB
User2 i/o request T2
Blocking
User3
Refreshes 2 times
FS
Multi threaded
server
T Thread
13
Wednesday, March 28, 12
23. Multi-threaded server - Threads are spawned for every connection
User1 i/o request
T1
DB
User2 i/o request T2
Blocking
User3 T3
Refreshes 2 times
FS
Multi threaded
server
T Thread
13
Wednesday, March 28, 12
24. Multi-threaded server - Threads are spawned for every connection
User1 i/o request
T1
DB
User2 i/o request T2
Blocking
User3 T3
Refreshes 2 times
FS
Multi threaded
server
T Thread
13
Wednesday, March 28, 12
25. Multi-threaded server - Threads are spawned for every connection
User1 i/o request
T1
DB
User2 i/o request T2
Blocking
User3 T3 T4
Refreshes 2 times
FS
Multi threaded
server
T Thread
13
Wednesday, March 28, 12
26. Multi-threaded server - Threads are spawned for every connection
User1 i/o request
T1
DB
User2 i/o request T2
Blocking
User3 T3 T4
Refreshes 2 times
FS
Multi threaded
server
T Thread
13
Wednesday, March 28, 12
27. Multi-threaded server - Threads are spawned for every connection
User1 i/o request
T1
DB
User2 i/o request T2
Blocking
User3 T3 T4 T5
Refreshes 2 times
FS
Multi threaded
server
T Thread
13
Wednesday, March 28, 12
28. Multi-threaded server - Threads are spawned for every connection
User1 i/o request
T1
DB
User2 i/o request T2
Blocking
User3 T3 T4 T5
Refreshes 2 times
User4 FS
refreshes 3 times
Multi threaded
server
T Thread
13
Wednesday, March 28, 12
29. Multi-threaded server - Threads are spawned for every connection
User1 i/o request
T1
DB
User2 i/o request T2
Blocking
User3 T3 T4 T5
Refreshes 2 times
User4 T6 FS
refreshes 3 times
Multi threaded
server
T Thread
13
Wednesday, March 28, 12
30. Multi-threaded server - Threads are spawned for every connection
User1 i/o request
T1
DB
User2 i/o request T2
Blocking
User3 T3 T4 T5
Refreshes 2 times
User4 T6 FS
refreshes 3 times
Multi threaded
server
T Thread
13
Wednesday, March 28, 12
31. Multi-threaded server - Threads are spawned for every connection
User1 i/o request
T1
DB
User2 i/o request T2
Blocking
User3 T3 T4 T5
Refreshes 2 times
User4 T6 FS
refreshes 3 times
Multi threaded
server
T Thread
13
Wednesday, March 28, 12
32. Multi-threaded server - Threads are spawned for every connection
User1 i/o request
T1
DB
User2 i/o request T2
Blocking
User3 T3 T4 T5
Refreshes 2 times
T6 T7 T8 FS
User4 T9
refreshes 3 times
Multi threaded
server
T Thread
13
Wednesday, March 28, 12
33. Multi-threaded server - Threads are spawned for every connection
User1 i/o request
T1
DB
User2 i/o request T2
Blocking
I/O
User3 T3 T4 T5
Refreshes 2 times
T6 T7 T8 FS
User4 T9
refreshes 3 times
Multi threaded
server
T Thread
13
Wednesday, March 28, 12
34. Multi-threaded server - Threads are spawned for every connection
User1 i/o request
T1
DB
User2 i/o request T2
Blocking
I/O
User3 T3 T4 T5
Refreshes 2 times
T6 T7 T8 FS
User4 T9
refreshes 3 times
Multi threaded
server
T Thread
Because every I/o is blocking,
server spawns a thread per connection
to support multiple requests
13
Wednesday, March 28, 12
35. Non-blocking & Evented I/O (Node.js server)
JS C/C++
T1
DB
V8
Event loop
(Libev)
t2
t1Libio
POSIX
Single Asynct4
thread t3
Threads
serves t6
all users t5
t7 FS
T1 JS Thread running
V8 your code (Single threaded)
Node.js
t1 POSIX threads doing
t2
async I/O (multi-threaded)
t3
14
Wednesday, March 28, 12
36. Non-blocking & Evented I/O (Node.js server)
JS C/C++
DB
Event loop
(Libev)
t2
t1Libio
POSIX
Single Asynct4
thread t3
Threads
serves t6
all users t5
t7 FS
T1 JS Thread running
V8 your code (Single threaded)
Node.js
t1 POSIX threads doing
t2
async I/O (multi-threaded)
t3
14
Wednesday, March 28, 12
37. Non-blocking & Evented I/O (Node.js server)
JS C/C++
DB
Event loop
(Libev)
t2
t1Libio
POSIX
Single Asynct4
thread t3
Threads
serves t6
all users t5
T1 t7 FS
V8
T1 JS Thread running
V8 your code (Single threaded)
Node.js
t1 POSIX threads doing
t2
async I/O (multi-threaded)
t3
14
Wednesday, March 28, 12
38. Non-blocking & Evented I/O (Node.js server)
JS C/C++
DB
Event loop
(Libev)
t2
t1Libio
POSIX
Single Asynct4
thread t3
Threads
serves t6
all users t5
t7 FS
T1 JS Thread running
V8 your code (Single threaded)
Node.js
t1 POSIX threads doing
t2
async I/O (multi-threaded)
t3
14
Wednesday, March 28, 12
39. Non-blocking & Evented I/O (Node.js server)
JS C/C++
DB
Event loop
(Libev)
t2
t1Libio
POSIX
Single Asynct4
thread t3
Threads
serves t6
all users t5
t7 FS
T1
T1 JS Thread running V8
V8 your code (Single threaded)
Node.js
t1 POSIX threads doing
t2
async I/O (multi-threaded)
t3
14
Wednesday, March 28, 12
40. Non-blocking & Evented I/O (Node.js server)
JS C/C++
DB
Event loop
(Libev)
t2
t1Libio
POSIX
Single Asynct4
thread t3
Threads
serves t6
all users t5
t7 FS
T1 JS Thread running
V8 your code (Single threaded)
Node.js
t1 POSIX threads doing
t2
async I/O (multi-threaded)
t3
14
Wednesday, March 28, 12
41. Non-blocking & Evented I/O (Node.js server)
JS C/C++
DB
Event loop
(Libev)
t2
t1Libio
POSIX
Single Asynct4
thread t3
Threads
serves T1 t6
all users V8 t5
t7 FS
T1 JS Thread running
V8 your code (Single threaded)
Node.js
t1 POSIX threads doing
t2
async I/O (multi-threaded)
t3
14
Wednesday, March 28, 12
42. Non-blocking & Evented I/O (Node.js server)
JS C/C++
DB
Event loop
(Libev)
t2
t1Libio
POSIX
Single Asynct4
thread t3
Threads
serves t6
all users t5
t7 FS
T1 JS Thread running
V8 your code (Single threaded)
Node.js
t1 POSIX threads doing
t2
async I/O (multi-threaded)
t3
14
Wednesday, March 28, 12
43. Non-blocking & Evented I/O (Node.js server)
JS C/C++
DB
T1
Event loop V8
(Libev)
t2
t1Libio
POSIX
Single Asynct4
thread t3
Threads
serves t6
all users t5
t7 FS
T1 JS Thread running
V8 your code (Single threaded)
Node.js
t1 POSIX threads doing
t2
async I/O (multi-threaded)
t3
14
Wednesday, March 28, 12
44. Non-blocking & Evented I/O (Node.js server)
JS C/C++
DB
Event loop
(Libev)
t2
t1Libio
POSIX
Single Asynct4
thread t3
Threads
serves t6
all users t5
t7 FS
T1 JS Thread running
V8 your code (Single threaded)
Node.js
t1 POSIX threads doing
t2
async I/O (multi-threaded)
t3
14
Wednesday, March 28, 12
45. Non-blocking & Evented I/O (Node.js server)
JS C/C++
T1
V8
DB
Event loop
(Libev)
t2
t1Libio
POSIX
Single Asynct4
thread t3
Threads
serves t6
all users t5
t7 FS
T1 JS Thread running
V8 your code (Single threaded)
Node.js
t1 POSIX threads doing
t2
async I/O (multi-threaded)
t3
14
Wednesday, March 28, 12
46. Non-blocking & Evented I/O (Node.js server)
JS C/C++
T1
User1 i/o request V8
DB
Event loop
(Libev)
t2
t1Libio
POSIX
Single Asynct4
thread t3
Threads
serves t6
all users t5
t7 FS
T1 JS Thread running
V8 your code (Single threaded)
Node.js
t1 POSIX threads doing
t2
async I/O (multi-threaded)
t3
14
Wednesday, March 28, 12
47. Non-blocking & Evented I/O (Node.js server)
JS C/C++
T1
User1 i/o request V8
DB
Event loop
(Libev)
delegate i/o to Non-blocking
t2 I/O
libeio t1Libio
POSIX
Single Asynct4
thread t3
Threads
serves t6
all users t5
t7 FS
T1 JS Thread running
V8 your code (Single threaded)
Node.js
t1 POSIX threads doing
t2
async I/O (multi-threaded)
t3
14
Wednesday, March 28, 12
48. Non-blocking & Evented I/O (Node.js server)
JS C/C++
T1
User1 i/o request V8
DB
Event loop
User2 i/o request (Libev)
delegate i/o to Non-blocking
t2 I/O
libeio t1Libio
POSIX
Single Asynct4
thread t3
Threads
serves t6
all users t5
t7 FS
T1 JS Thread running
V8 your code (Single threaded)
Node.js
t1 POSIX threads doing
t2
async I/O (multi-threaded)
t3
14
Wednesday, March 28, 12
49. Non-blocking & Evented I/O (Node.js server)
JS C/C++
User1 i/o request
DB
Event loop
User2 i/o request (Libev)
delegate i/o to Non-blocking
t2 I/O
libeio t1Libio
POSIX
Single Asynct4
thread t3
Threads
serves t6
all users t5
t7 FS
T1 JS Thread running
V8 your code (Single threaded)
Node.js
t1 POSIX threads doing
t2
async I/O (multi-threaded)
t3
14
Wednesday, March 28, 12
50. Non-blocking & Evented I/O (Node.js server)
JS C/C++
User1 i/o request
DB
Event loop
User2 i/o request (Libev)
T1 delegate i/o to Non-blocking
t2 I/O
V8 libeio t1Libio
POSIX
Single Asynct4
thread t3
Threads
serves t6
all users t5
t7 FS
T1 JS Thread running
V8 your code (Single threaded)
Node.js
t1 POSIX threads doing
t2
async I/O (multi-threaded)
t3
14
Wednesday, March 28, 12
51. Non-blocking & Evented I/O (Node.js server)
JS C/C++
User1 i/o request
DB
Event loop
User2 i/o request (Libev)
T1 delegate i/o to Non-blocking
t2 I/O
V8 libeio t1Libio
User3 POSIX
Refreshes 2 times Single Asynct4
thread t3
Threads
serves t6
all users t5
t7 FS
T1 JS Thread running
V8 your code (Single threaded)
Node.js
t1 POSIX threads doing
t2
async I/O (multi-threaded)
t3
14
Wednesday, March 28, 12
52. Non-blocking & Evented I/O (Node.js server)
JS C/C++
User1 i/o request
DB
Event loop
User2 i/o request (Libev)
T1 delegate i/o to Non-blocking
t2 I/O
V8 libeio t1Libio
User3 POSIX
Refreshes 2 times Single Asynct4
thread t3
Threads
serves t6
all users t5
t7 FS
i/o result returned
2 EL after x time
T1 JS Thread running
V8 your code (Single threaded)
Node.js
t1 POSIX threads doing
t2
async I/O (multi-threaded)
t3
14
Wednesday, March 28, 12
53. Non-blocking & Evented I/O (Node.js server)
JS C/C++
User1 i/o request
DB
Event loop
User2 i/o request (Libev)
T1 delegate i/o to Non-blocking
t2 I/O
V8 libeio t1Libio
User3 POSIX
Refreshes 2 times Single Asynct4
thread t3
Threads
serves t6
all users t5
User4
refreshes 3 times
t7 FS
i/o result returned
2 EL after x time
T1 JS Thread running
V8 your code (Single threaded)
Node.js
t1 POSIX threads doing
t2
async I/O (multi-threaded)
t3
14
Wednesday, March 28, 12
54. Non-blocking & Evented I/O (Node.js server)
JS C/C++
User1 i/o request
DB
Event loop
User2 i/o request (Libev)
T1 delegate i/o to Non-blocking
t2 I/O
V8 libeio t1Libio
User3 POSIX
Refreshes 2 times Single Asynct4
thread t3
Threads
serves t6
all users t5
User4
refreshes 3 times
t7 FS
i/o result returned
2 EL after x time
T1 JS Thread running
V8 your code (Single threaded)
Node.js
t1 POSIX threads doing
t2
async I/O (multi-threaded)
t3 Everything except your (JS) code is runs in parallel (by libio)
14
Wednesday, March 28, 12
55. Event-driven, non-blocking I/O server
Real-world example of the two models?
Multi-threaded blocking server (Apache)
v/s
Event-driven, non-blocking server (Nginx)
15
Wednesday, March 28, 12
56. Apache V/s Nginx: performance
Reqs/sec v/s concurrent connections
At ~4000 concurrent connections,
- Nginx can serve ~9000 reqs/sec
- Apache can serve ~3000 reqs/sec
Ref: http://blog.webfaction.com/a-little-holiday-present
16
Wednesday, March 28, 12
58. Saving I/O is great, what else is happening w/ Node.js?
Let’s look at community, libraries, buzz around Node.js
18
Wednesday, March 28, 12
59. Other things going on for Node.js
2nd most popular watched on git
19
Wednesday, March 28, 12
60. Other things going on for Node.js
8,000+ libraries/modules/servers
High-level library categories
Web frameworks Oracle Multiple protocols Command Line Option Parsers
NoSQL and Key/Value HTTP Parser Generators
Routers
Mongo FTP Other Parsers
Static file servers Debugging / Console Utilities
Hive E-mail
Microframeworks Redis XMPP Compression
Frameworks Graphics
CouchDB Other networking Sound
Middleware Other NoSQL implementations RPC Payment Gateways
JSGI Miscellaneous and multiple DB Web Sockets & Ajax API clients
Connect Templating Message Queues Control flow / Async goodies
Other middleware CSS Engines Class systems I18n and L10n modules
Content Management Systems Testing / Spec Frameworks Boilerplates
Other Build and Deployment Wrappers Continuous Integration Tools
Database Package Management Systems Parsers DDD, CQRS, EventSourcing
MS SQL Server Module Loader JSON Desktop application related
OpenSSL / Crypto / Hashing XML JavaScript threads
PostgreSQL Other
MySQL SMTP
SQLite TCP / IP
https://github.com/joyent/node/wiki/modules
20
Wednesday, March 28, 12
61. Other things going on for Node.js
Node in Production!
• LinkedIn, Yahoo!, Microsoft, eBay, Twitter etc.
• >1000 other companies/startups are using it in production
All kinds of interesting apps:
End-user apps:
• Real-time apps
• Mobile apps
• CRMs, Web sites etc. etc.
Platform apps (Servers / Services):
• Node-http-proxy - Node.js implementation of reverse proxy like nginx
• Ldapjs – - Node.js implementation of LDAP server itself
• SMTP – Node.js implementation of SMTP server itself
• XMPP, SSH, RPC, many more.
21
Wednesday, March 28, 12
62. Agenda – part 2
1. About Node.js
• Internal working of Node.js
• Buzz around Node.js
• Who is using it
• What kind of apps are being built
2. Coding in Node.js
• Sync v/s Async coding (Callbacks)
• Classes & Modules (CommonJS)
• Node.js EventEmitters
• npm & package.json
3. Node.js & Cloud Foundry
• Hello World app in Cloud Foundry
• Using Sticky Sessions
• CloudFoundry Module & connecting to Redis, MongoDB etc
• Express.js (RESTful) app
• Socket.io + Express.js (Real-time) app
4. Demo
• An sample app that uses concepts & modules talked above
22
Wednesday, March 28, 12
63. Let’s look at the code..
How does async code differ from sync(regular) code?
Synchronous code
v/s
Asynchronous Code
23
Wednesday, March 28, 12
64. Callbacks – Control flow
Use case: Let’s say we have an item’s id and want to get its name from DB and print it
//Synchronous & blocking code //Async & non-blocking code
function getItemNameById(id) { function getItemNameById(id, callback) {
//blocks or waits for DB db.get(id, callback); //step 2
return db.get(id); //step 2 //nothing is returned here
} }
var name = getItemNameById(100); //step 1 //step 3
Some internal function calls the callback w/ result
//print name in step 3
console.log(name); //step 3 //You create a callback helper function
function displayHelperCallback(name) {
console.log(name); //step 4
}
Things to note: //pass callback function to consume the result
getItemNameById(100, displayHelperCallback); //step 1
1. Async code doesn’t directly ‘return’
anything
2. Instead, it takes a function(callback)
& calls that function when result
becomes available
24
Wednesday, March 28, 12
65. Callbacks – Control flow (detailed version in Node.js)
//YOUR APP
var db = require(‘db’);
function getItemNameById(id, callback) {
db.get(id, callback); //step 2
}
//You create a callback helper function
function displayHelperCallback(name) {
console.log(name); //step 103
}
//pass callback function to consume the result //step 5
getItemNameById(100, displayHelperCallback); //step 1
V8 is free to run other functions in the event-
loop.
//INTERNALS OF A DB LIBRARY (HIGH LEVEL)
//step 5, step 6 ..step 100
function db() { Say v8 notices 95 other things to do (in the
this.dbConnection = net.connection(); // connects to DB event loop), it starts executing them one by
} one.
db.prototype.get = function(id, callback) {
var self = this; //step 3
this.dbConnection.write(id, function(result) { //step 4 At some point b/w step 3 and step 100,
Step 5 returns result & asks to run
self. receiveFromDB(result, callback);//step 101
}); dbConnection.write’s callback.
}
This event goes to the back of the queue as
db.prototype.receiveFromDB = function(result, callback) { step 101
callback(result); //Execute callback step step 102
}
25
Wednesday, March 28, 12
66. Node.js
How can I better organize my code?
Classes & CommonJS module
26
Wednesday, March 28, 12
67. JavaScript Classes (Prototypical inheritance)
//JavaScript prototypical inheritance Node.js also provides handy util.inherits function to
inherit.
//Super Class - This also provides ‘subclass.super_’ to access
function Automobile(license, model) { super class’ functions
this.license = license;
this.model = model; var require(‘util’); //import util module
}
//Super Class
Automobile.prototype.getModel = function() { function Automobile(license, model) {
return model; this.license = license;
} this.model = model;
}
//Sub class
function Car(license, model) { Automobile.prototype.getModel = function() {
Automobile.call(this, license, model); return model;
} }
Car.prototype = new Automobile(); //Sub class
Car.prototype.constructor = Car; function Car(license, model) {
Automobile.call(this, license, model);
}
util.inherits(Car, Automobile);
27
Wednesday, March 28, 12
68. CommonJS modules
//Automobile.js file Things to note:
function Automobile(license, model) { 1. Allows keeping JS code in separate
this.license = license; files
this.model = model;
}
2. Use “exports.<name>” to export
Automobile.prototype.getModel = function() { something
return model;
} 1. Use require(‘path/to/module’) to
exports.Automobile = Automobile; import it
2. use require(‘module’).<name> to
access things inside module
//Car.js file
var util = require('util');
var module = require('./Automobile');
var Automobile = module.Automobile;
function Car(license, model) {
Automobile.call(this, license, model);
}
util.inherits(Car, Automobile);
console.log(new Car("1232", "BMW").model); //prints BMW
28
Wednesday, March 28, 12
69. CommonJS modules: Exporting multiple things
//myModule.js file Things to note:
exports.myFunction = function () { 1. You can directly export function,
return ‘hi there’; arrays, variables
}
exports.myArray = [‘foo’, ‘bar’];
2. You can export multiple things from
exports.myVariable = ‘I’m a variable’; one file using ‘exports’
//app.js file
var myModule = require('./myModule');
console.log(myModule.myFunction()); //prints ‘’hi there’
console.log(myModule.myArray[1]); //prints ‘bar’
console.log(myModule.myVariable); //prints I’m a variable’
29
Wednesday, March 28, 12
70. CommonJS modules: ‘exports’ v/s ‘module.exports’
//myModule.js file Things to note:
module.exports = function () { If you want to export only one
return ‘hi there’; thing.. so that it can be used
} directly by the recepient, you can
use..
module.exports = <something>;
Warning:
If you use both module.exports
//app.js file and exports.bla, exports.bla will
var myFunction = require('./myModule'); NOT be exported(ignored)
console.log(myModule.myFunction()); //prints ‘’hi there’
30
Wednesday, March 28, 12
71. Node.js EventEmitter (A utility class that allows emitting events)
EventEmitter class implements Observer pattern and provides on and emit
APIs
• It is used when creating(not using) an async library.
Node.js EventEmitter
31
Wednesday, March 28, 12
72. Events – Node.js EventEmitter (A node.js utility class that allows emitting events)
//Simplified EventEmitter (Observer pattern)
function EventEmitter() {
//store events and callbacks like {event1: [callback1, callback2] , event2 : [cb3, cb4]…}
this.eventNameAndCallbackList = {};
}
//Allow others to add a callback(function) for a event name(string)
EventEmitter.prototype.on = function(eventName, callback) {
//add eventName and callback to eventNameAndCallbackList
};
//When an event is emitted, call each callbacks in a loop
EventEmitter.prototype.emit = function(eventName) {
for(var i =0; i < currentCallbacks.length ; i++) {
currentCallbacks[i](); //call each callback
}
};
exports.EventEmitter = EventEmitter;
32
Wednesday, March 28, 12
73. Events – Node.js EventEmitter (continued)
Say you are writing an I/O library & writing readFromDB function but don’t know how to handle
async DB result.
You can solve it by..
1. Inheriting your class from EventEmitter
2. Then you can use its ‘emit’ function to an event when data arrives (asynchronously)
3. You ask people who’ll be using your library to implement ‘on’ function
//myIOModule.js
var util = require('util');
var events = require('events');
//myIOClass is a subclass of events.EventEmitter class
var MyIOClass = function () {
events.EventEmitter.call(this);
};
util.inherits(MyIOClass, events.EventEmitter);
MyIOClass.prototype.readFromDB = function(query){
// <--reads data code here -->
this.emit('data', "some data");
}
exports.MyIOClass = MyIOClass; //export the class
33
Wednesday, March 28, 12
74. Events – Node.js EventEmitter (continued)
Say you are an end-user trying to use DB library to read result from DB..
1. You’ll have to implement ‘on’ function for the given event name (‘data’) and set a callback
2. DB libraries internal function will call your callback when the result comes back
//app.js
var myIOModule = require('./myIOModule');
var myIOClass = new myIOModule.MyIOClass();
myIOClass.on('data', function (data) {
console.log(data);
});
myIOClass.readFromDB('select * from users');
34
Wednesday, March 28, 12
75. Events – A library can emit multiple events
I/O libraries usually emit multiple events.. connected,
disconnected, error, ready, data, result etc.
//So you can listen to all of them..
function myFunction() {
db.on(‘error’, function(e) {
console.error(e);
});
db.on(‘connect’, function() { //db is connected
db.query(user);
});
db.on(‘disconnect’, function(){
console.log(‘db disconnected’);
});
db.connect(‘127.0.0.1’, ‘100’);
}
35
Wednesday, March 28, 12
76. Events – Error/Exception handling
//Say there was an exception trying to connect to db.
Function () {
try {
db.connect(‘127.0.0.1’, ‘4000’); // failed to connect; connectionException
} catch (e) {
console.error(e);
}
}
Above try/catch won’t handle it because the act of connection itself is an i/o
//Say there was an exception trying to connect to db.
Function () {
//Typically I/O libraries triggers ‘error’ event. We’ll need to listen to that event
db.on(‘error’, function(e) {
console.error(e);
});
db.connect(‘127.0.0.1’, ‘100’); // failed to connect; connectionException
}
36
Wednesday, March 28, 12
77. Installing external modules – npm (Node Package Manager)
Use npm (Node Package Manager) to install modules Things to note:
npm install <moduleName> 1. npm = Node Package Manager
e.x. npm install express 2. It is a CLI to install modules from
3. Using package.json is preferred
Modules are copied into ./node_modules folder
/myapp
/myapp/node_modules/express 1. Need to be careful about versions
2. You need to have all the modules
pre-installed (i.e. npm install)
//Instead keep ALL dependencies in package.json file in
root of your app and run: before uploading your app to
npm install Cloud Foundry
//package.json
{
"name": ”MyApp",
"description": ”My awesome twitter app",
"version": "2.5.8",
"author": ”Raja<rajar@vmware.com>",
"dependencies": {
"express": “2.3.4”,
"mime": "",
"connect-redis": ">= 0.0.1"
}
}
37
Wednesday, March 28, 12
78. Installing external modules - npm & package.json
Use npm (Node Package Manager) to install modules Things to note:
npm install <moduleName> 1. npm = Node Package Manager
e.x. npm install express 2. It is a CLI to install modules from
3. Using package.json is preferred
Modules are copied into ./node_modules folder
/myapp
/myapp/node_modules/express 1. Need to be careful about versions
2. You need to have all the modules
pre-installed (i.e. npm install)
//Instead keep ALL dependencies in package.json file in
root of your app and run: before uploading your app to
npm install Cloud Foundry
//package.json
{
"name": ”MyApp",
"description": ”My awesome twitter app",
"version": "2.5.8",
"author": ”Raja<rajar@vmware.com>",
"dependencies": {
"express": “2.3.4”,
"mime": "",
"connect-redis": ">= 0.0.1"
}
}
38
Wednesday, March 28, 12
79. Agenda – part 3
1. About Node.js
• Internal working of Node.js
• Buzz around Node.js
• Who is using it
• What kind of apps are being built
2. Coding in Node.js
• Sync v/s Async coding (Callbacks)
• Classes & Modules (CommonJS)
• Node.js EventEmitters
• npm & package.json
3. Node.js & Cloud Foundry (w/ demo)
• Cloud Foundry – Open PaaS
• Hello World app in Cloud Foundry
• Scaling - Using Sticky Sessions
• CloudFoundry Module & connecting to Redis, MongoDB etc
• Express.js (RESTful) app
• Socket.io + Express.js (Real-time) app
4. Demo
• An sample app that uses concepts & modules talked above
39
Wednesday, March 28, 12
80. Cloud Foundry
Cloud Foundry – Open Platform as a Service
40
Wednesday, March 28, 12
81. What is Cloud Computing?
Cloud According to my daughter Eliette (10 years old)
41
Wednesday, March 28, 12
82. Cloud Stack - Classic Pyramid
Software
As A Service
Platform As A Service
Infrastructure As A Service
42
Wednesday, March 28, 12
83. Cloud Stack - By Value
Software
As A Service
Platform As A Service
Infrastructure
As A Service
43
Wednesday, March 28, 12
84. Agility as a survival skill
§ Consumer software is becoming like fashion
• Phone apps, social apps, short lifetime, fast lifecycles
• Ab testing
§ Clay shirky situational apps
§ Kent Beck, Usenix 2011 Talk, “Software G-Forces”
change in software process when frequency grows
§ Cloud Platforms enables an Agile culture, driver for innovation
• Scalability is built in the platforms
• Can iterate faster
• Focus on design
§ Cloud Platforms lets developers focus on driving business value
44
Wednesday, March 28, 12
85. Platforms
§ Raise the Unit of currency to be application & services instead of
infrastructure
§ Google App Engine, Cloud Foundry, Joyent, Heroku, Stax
(Cloudbees), Amazon elastic beanstalk, Microsoft Azure, AppFog
§ Single or a few languages, services
§ Start of Multi language Polyglot platforms
§ Enabler for Agile Developers -> Create Business value faster
§ Lack of standards: risk, vendor lock-in
§ Enterprise needs:
• Control, customizability
• Private/Hybrid Cloud
• Avoid lock-in
45
Wednesday, March 28, 12
86. Main Risk: Lock-In
Welcome to the hotel california
Such a lovely place
Such a lovely face
Plenty of room at the hotel california
Any time of year, you can find it here
Last thing I remember, I was
Running for the door
I had to find the passage back
To the place I was before
’relax,’ said the night man,
We are programmed to receive.
You can checkout any time you like,
But you can never leave!
46
Wednesday, March 28, 12
88. Cloud Foundry open PaaS - Choice of frameworks
OSS community
Wednesday, March 28, 12
89. Cloud Foundry open PaaS - Choice of application services
Ap
p
Data
lica
Services
'o
n
S
erv
Msg
ice
Services
In
ter
fac
Other
e
Services
Wednesday, March 28, 12
90. Cloud Foundry open PaaS - Choice of application services
vFabric
Postgres
Ap
p
Data
lica
Services
'o
n
S
vFabric
erv
RabbitMQTM Msg
ice
Services
In
ter
fac
Other
e
Services
Additional partners
services …
Wednesday, March 28, 12
91. Cloud Foundry open PaaS - Choice of clouds
Ap
e
fac
Private
p
Data
lica
Services
ter
Clouds
'o
r
In
n
S
ide
erv
Public
ov
Msg
ice
Services
Pr
Clouds Partners
In
ud
ter
Cl o
.COM
fac
Other Micro
e
Services
Clouds
Wednesday, March 28, 12
92. Cloud Foundry open PaaS - Choice of clouds
A void
ck-in
Ap
e
Lo
fac
Private
p
Data
lica
Services
ter
Clouds
'o
r
In
n
S
ide
erv
Public
ov
Msg
ice
Services
Pr
Clouds Partners
In
ud
ter
Cl o
.COM
fac
Other Micro
e
Services
Clouds
Wednesday, March 28, 12
93. Cloud Foundry open PaaS - Choice of clouds
OSS community
A void
ck-in
Ap
e
Lo
fac
Private
p
Data
lica
Services
ter
Clouds
'o
r
In
n
S
ide
erv
Public
ov
Msg
ice
Services
Pr
Clouds Partners
In
ud
ter
Cl o
.COM
fac
Other Micro
e
Services
Clouds
Wednesday, March 28, 12
94. Open Source Advantage: it gets better faster!
§ http://code.google.com/p/googleappengine/issues/detail?id=13
• https://github.com/cloudfoundry/vcap/pull/25
50
Wednesday, March 28, 12
95. Cloud Foundry open Platform as a Service
The PaaS of choice for the Cloud era
Simple
• Let’s developers focus on their code and not wiring middleware
Open
• Avoid lock-in to specific cloud, frameworks or service
• Completely open source from day one
Flexible and Scalable
• Self service, deploy and scale your applications in seconds
• Extensible architecture to “digest” future cloud innovation
51
Wednesday, March 28, 12
97. Node.js on Cloud foundry
(Demos and Examples)
53
Wednesday, March 28, 12
98. Hello World App on Cloud Foundry
//Simple http server on localhost //Simple http server on Cloud Foundry
var http = require('http'); var http = require('http');
http.createServer(function (req, res) { var host = process.env.VCAP_APP_HOST ||
res.writeHead(200, {'Content-Type': 'text/plain'}); ‘localhost’;
res.end('Hello Worldn'); var port = process.env.VCAP_APP_PORT || ‘3000’;
}).listen(3000, '127.0.0.1'); http.createServer(function (req, res) {
console.log('Server running at 127.0.0.1:3000'); res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello Worldn');
}).listen(port, host);
console.log('Server running at ’ + host + “:” + port);
Things to note:
1. Cloud Foundry will provide host and port info in process.env
variable
2. You can use https to access your app (up to nginx; http w/in CF)
3. Save your app as app.js or server.js to automatically use that as
main node.js
54
Wednesday, March 28, 12
99. Hello World App using ExpressJS on Cloud Foundry
var host = process.env.VCAP_APP_HOST || 'localhost'; Things to note:
var port = process.env.VCAP_APP_PORT || '3000';
1. ExpressJS is Ruby Sinatra
var express = require('express'); inspired web framework
var app = express.createServer();
2. It provides support for:
app.configure('development', function() { 1. Dev/Prod Configurations
app.use(express.errorHandler({ dumpExceptions: true, 2. Routes
showStack: true }));
}); 3. Templating
4. Sessions
app.configure('production', function() { 5. Many, many other features
app.use(express.errorHandler());
});
app.get('/user/', function(req, res){
throw new Error(“call me w/ a user id");
});
app.get('/user/:id', function(req, res){
res.send('user ' + req.params.id);
});
app.listen(port, host);
55
Wednesday, March 28, 12
100. Hello World App w/ built-in node.js cluster ( > 0.6)
var cluster = require('cluster'); Things to note:
var http = require('http'); 1. Node.js started to support Windows servers
var numCPUs = require('os').cpus().length;
var port = process.env.VCAP_APP_PORT || 3000;
• Supposedly runs faster on Windows J
var host = process.env.VCAP_APP_HOST ||
'localhost'; 1. If you are using cluster or need node 0.6 or
greater, use node06 runtime
if (cluster.isMaster) { //fork workers i.e. vmc push myapp --runtime=node06
for (var i = 0; i < numCPUs; i++) {
cluster.fork();
} 2. This example spawns 4 node processes per
cluster.on('death', function(worker) { instance!
console.log('worker ' + worker.pid + ' died'); • Watch out, it might exceeds default 64MB
}); memory.
} else {
// Each worker processes have a http server. 3. You may have to implement Redis based-
http.Server(function(req, res) { session store
res.writeHead(200);
res.end(host + ":" + port);
}).listen(port, host);
console.log("listening on.. " + host + ":" +
port);
}
56
Wednesday, March 28, 12
101. Agenda – part 3
1. About Node.js
• Internal working of Node.js
• Buzz around Node.js
• Who is using it
• What kind of apps are being built
2. Coding in Node.js
• Sync v/s Async coding (Callbacks)
• Classes & Modules (CommonJS)
• Node.js EventEmitters
• npm & package.json
3. Node.js & Cloud Foundry (w/ demo)
• Cloud Foundry – Open PaaS
• Hello World app in Cloud Foundry
• Scaling - Using Sticky Sessions
• CloudFoundry Module & connecting to Redis, MongoDB etc
• Express.js (RESTful) app
• Socket.io + Express.js (Real-time) app
4. Demo
• An sample app that uses concepts & modules talked above
57
Wednesday, March 28, 12
102. Cloud Foundry Resources
Primary Site : cloudfoundry.com
Open Source Site : cloudfoundry.org
Twitter : @cloudfoundry , hash tag #cfoundry
Blog : blog.cloudfoundry.com
FB : facebook.com/cloudfoundry
Support : support.cloudfoundry.com
• Documentation
• Knowledge Base
• Q & A / Forums
58
Wednesday, March 28, 12
104. Thank You!
t @CloudFoundry
t @chanezon
Website : www.cloudfoundry.com
Blog : blog.cloudfoundry.com
Forum : support.cloudfoundry.com
Wednesday, March 28, 12
105. Books / Articles
§ Nick Carr, The Big Switch
§ Eric Raymond, The Art of Unix Programming
§ Weinberg, Psychology of Computer Programming
§ Wes python book
§ Mark html5 book
§ Kent Beck XP
§ Hunt, Thomas, The Pragmatic Programmer
§ Ade Oshineye, Apprenticeship Patterns
§ Matt Cutt's Ignite Talk IO 2011, Trying different things
§ Josh Bloch talk about api design
§ Larry and Sergey, Anatomy of a Search Engine
§ Rob Pike, The Practice of Programming
61
Wednesday, March 28, 12
106. Papers / Talks
§ Simon Wardley, Oscon 09 “Cloud - Why IT Matters”
§ Tim O’Reilly article on internet os
§ Peter Deutsch’s 8 Fallacies of Distributed Computing
§ Brewer’s CAP Theorem
§ Gregor Hohpe’s Starbucks Does Not Use Two-Phase Commit
§ Herb Sutter, Welcome to the Jungle
http://herbsutter.com/welcome-to-the-jungle/
§ Stuff I tag http://www.delicious.com/chanezon/
§ More specifically http://www.delicious.com/chanezon/cloudfoundry
§ My previous Talks http://www.slideshare.net/chanezon
§ My list of favorite books
http://www.chanezon.com/pat/soft_books.html
62
Wednesday, March 28, 12
107. Acknowledgement
§ Drawings from my daughters Eliette
§ Slides from Dave McCrory, Derek Collison, Russell Acton,
Alexandre Vasseur, Raja Rao
§ Chinese poetry from Wang Wei, Zhu Yunming, Jiao Dao, Li Bai
from “The Anchor book of Chinese Poetry”, Tony Barnstone and
Chou Ping
63
Wednesday, March 28, 12