The document summarizes a presentation given by Alex Borysov and Mykyta Protsenko comparing gRPC and REST. It provides an overview of gRPC, describing it as a high performance RPC framework. It then discusses some issues with REST including heterogeneous data formats and service discovery. Examples are given of implementing a sample aggregator service using both REST and gRPC to illustrate their differences.
Inter-Process Communication in Microservices using gRPCShiju Varghese
This document discusses inter-process communication in microservices architectures using gRPC and Protocol Buffers. It begins with an overview of moving from a monolithic to a microservices architecture and the challenges of communication between independent services. It then covers considerations for building high performance APIs and why gRPC and Protocol Buffers are well-suited for microservices. The remainder details what gRPC is, how Protocol Buffers work, and how gRPC uses Protocol Buffers to provide a framework for remote procedure calls between services.
- gRPC is an open source RPC framework originally developed by Google in 2015. It uses HTTP/2 for transport, Protocol Buffers as the interface definition language, and provides features like authentication, bidirectional streaming and interface definitions.
- Compared to REST, gRPC is faster, more efficient through binary encoding (Protocol Buffers), supports bidirectional streaming, and generates client and server code. However, it lacks browser support and has fewer available tools.
- gRPC is best suited for internal microservices communication where high performance is required and tight coupling is acceptable. It supports unary, server streaming, client streaming and bidirectional streaming RPC patterns.
gRPC is an open source high performance RPC framework that can connect services across data centers efficiently using pluggable support for load balancing, tracing, health checking and authentication. It supports languages like Go, Java, Python and C++ and can connect devices, mobile apps, and browsers to backend services. gRPC uses HTTP/2 for communication over TCP, supports Protocol Buffers and JSON, and offers features like request multiplexing and server push. Many large companies use gRPC in production including Google, Square, Dropbox, and Netflix.
gRPC is an open source framework that allows for communication between services using HTTP/2 and Protocol Buffers. It provides features like low latency and high scalability. Key benefits include focusing on service design, language interoperability, and growing community support. gRPC uses Protocol Buffers for serialization, HTTP/2 for transport, and an IDL for service definitions. It supports various request-response and streaming call types and provides libraries in many languages.
1. gRPC is an open source RPC framework developed at Google in 2015 that provides high performance communication between services. It uses protocol buffers for serialization and HTTP/2 for transport.
2. gRPC supports .NET Core since version 3.0 and can replace WCF in the .NET ecosystem. It uses protocol buffers definitions to define service contracts and message types in a language-neutral way.
3. gRPC is well suited for microservices, real-time communication, multi-language environments, and network-constrained scenarios due to its high performance, interoperability and streaming capabilities. It has become a popular RPC framework for building distributed systems.
Back in 2015, Square and Google collaborated to launch gRPC, an open source RPC framework backed by protocol buffers and HTTP/2, based on real-world experiences operating microservices at scale. If you build microservices, you will be interested in gRPC.
This webcast covers:
- a technical overview of gRPC
- use cases and applicability in your stack
- a deep dive into the practicalities of operationalizing gRPC
Introduction to gRPC: A general RPC framework that puts mobile and HTTP/2 fir...Codemotion
gRPC is a high performance, language-neutral, general RPC framework developed and open sourced by Google. Built on the HTTP/2 standard, gRPC brings many benefits such as bidirectional streaming, flow control, header compression, multiplexing and more. In this session, you will learn about gRPC and how you can use it in your applications.
gRPC is a remote procedure call framework developed by Google that uses HTTP/2 for transport, Protocol Buffers as the interface definition language, and provides features such as authentication, bidirectional streaming and blocking or nonblocking bindings. It aims to be fast, lightweight, easy to use and supports many languages. Key benefits include low latency using HTTP/2, efficient serialization with Protocol Buffers and multi-language support.
The document discusses gRPC, an open-source framework for building distributed applications and services. It was motivated by Google's experience with internal RPC systems handling over 1010 RPCs per second. gRPC uses HTTP/2 for transport, allowing it to take advantage of existing network infrastructure while enabling features like bidirectional streaming. It generates client and server code from IDL definitions, supporting multiple languages.
gRPC in Golang presentation
In this talk, I introduced gRPC, Protocol buffer, and how to use them with golang.
Source code used in the presentation: http://github.com/AlmogBaku/grpc-in-go
Robert Kubis - gRPC - boilerplate to high-performance scalable APIs - code.t...AboutYouGmbH
The document discusses gRPC, an open source framework for building microservices. It was created by Google to be a high performance, open source universal RPC framework. gRPC uses HTTP/2 for transport, Protocol Buffers as the interface definition language, and generated client/server code for many languages to make cross-platform communications simple and efficient. The document provides an overview of gRPC's goals and architecture, how to define a service using .proto files, and examples of common RPC patterns like unary, streaming, and bidirectional calls.
gRPC can help minimize the barrier of cross-system communication by providing language-agnostic API definitions, backward and forward compatible versioning with protocol buffers, and pluggable load balancing and tracing. You will see how to quickly get up and running with the gRPC framework using Node.js from creating a protocol definition, creating meaningful health checks, and securing the endpoint. Additionally, this session will go over best practices and how to take full advantage of what gRPC has to offer.
Spend some time working with OpenAPI and gRPC and you’ll notice that these two technologies have a lot in common. Both are open source efforts, both describe APIs, and both promise better experiences for API producers and consumers. So why do we need both? If we do, what value does each provide? What can each project learn from the other? We’ll bring the two together for a side-by-side comparison and pose answers to these and other questions about two API methodologies that will do much to influence the future of networked APIs.
Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023Steve Pember
In this presentation we will present the general philosophy of Clean Architecture, Hexagonal Architecture, and Ports & Adapters: discussing why these approaches are useful and general guidelines for introducing them to your code. Chiefly, we will show how to implement these patterns within your Spring (Boot) Applications. Through a publicly available reference app, we will demonstrate what these concepts can look like within Spring and walkthrough a handful of scenarios: isolating core business logic, ease of testing, and adding a new feature or two.
Munander Maan presented an introduction to gRPC, a modern, fast and efficient open-source framework developed by Google. The presentation covered what gRPC is, how it works internally using Protocol Buffers, its advantages over REST APIs, how it achieves scalability, and different types of APIs that can be built with gRPC. The agenda included deep dives into gRPC internals, comparisons with REST, scalability, and API types.
Developing RESTful Web APIs with Python, Flask and MongoDBNicola Iarocci
Presented at EuroPython 2012. The abstract: "In the last year we have been working on a full featured, Python powered, RESTful Web API. We learned quite a few things on REST best patterns, and we got a chance to put Python’s renowned web capabilities under review, even releasing a couple Open Source projects in the process. In my talk I will share what we learned. We will consider ‘pure’ REST API design and its many hurdles. We will look at what Python as to offer in this field and finally, we will dig further down by looking at some of the code we developed. Some of the technologies/stacks I’ll cover are (in no particular order): Flask, PyMongo, MongoDB, REST, JSON, XML, Heroku. Did you know? Like it or not, there is going to be a REST API in your future."
In this session, we will learn what are observables and how we work with them in Angular - creating them and subscribing to them.And how we can deliver messages between different parts of your single-page application.
This document summarizes a presentation about log forwarding at scale. It discusses how logging works internally and requires understanding the logging pipeline of parsing, filtering, buffering and routing logs. It then introduces Fluent Bit as a lightweight log forwarder that can be used to cheaply forward logs from edge nodes to log aggregators in a scalable way, especially in cloud native environments like Kubernetes. Hands-on demos show how Fluent Bit can parse and add metadata to Kubernetes logs.
This document summarizes a presentation comparing gRPC and REST by Alex Borysov and Mykyta Protsenko. It begins with introductions of the presenters and their backgrounds. It then discusses key differences between gRPC and REST such as gRPC using protocol buffers for defining APIs and being non-blocking via streaming, while REST focuses on resources and uses JSON/HTTP. Examples are provided of implementing services and clients for both approaches. Challenges of microservices and distributed systems that both aim to address are also covered.
"gRPC vs REST: let the battle begin!" DevoxxUK 2018 editionAlex Borysov
The document discusses gRPC vs REST for building microservices. It begins with introductions from two software engineers and then delves into explanations of what gRPC and REST are, including how gRPC uses protocol buffers to define service interfaces, generates client/server code, and supports multiple languages. It also covers how gRPC performs remote calls more efficiently than REST and is better suited than REST for microservices that require features like service discovery, load balancing, and fault tolerance.
"gRPC vs REST: let the battle begin!" GeeCON Krakow 2018 editionAlex Borysov
This document summarizes a presentation given by Alex Borysov and Mykyta Protsenko comparing gRPC and REST. It introduces the speakers and their backgrounds. gRPC is described as a high performance RPC framework that is part of CNCF and supports 10+ programming languages. REST architectures are discussed where services expose resources via URLs and standard HTTP methods. The document highlights some challenges with the REST approach including service discovery and handling multiple data formats. Overall the document provides an overview of gRPC and REST comparing their approaches to designing APIs and microservices.
"gRPC vs REST: let the battle begin!" OSCON 2018 editionAlex Borysov
This document compares REST and gRPC for building microservices. It discusses how REST uses HTTP requests to access resources on a URL, while gRPC uses protocol buffers to define APIs and services. It provides examples of implementing services and clients using both approaches. The document argues that gRPC performs better for microservices due to features like streaming, automatic client generation, and language-independent services.
Building Event-Driven (Micro) Services with Apache KafkaGuido Schmutz
The document discusses building event-driven microservices using Apache Kafka. It describes how microservices can interact asynchronously through events published to an event hub like Apache Kafka. This allows for loose coupling between services and the ability to integrate new services by consuming past events from the event log. The document also discusses how Apache Kafka can be used for change data capture from legacy systems, streaming data integration, and providing a unified platform for real-time event processing and historical analytics.
REST – Beyond the hype
The document discusses REST and common misconceptions about RESTful API design. It begins with a brief history of REST and considerations of alternatives like SOAP. It then addresses how the rise of frameworks led to prescriptive but incorrect "rules" for REST. The bulk of the document dispels common myths and "lies" told about RESTful design, focusing on proper use of URIs, resources, media types, and use of hypermedia. It emphasizes that REST is an architectural style and not a rigid set of rules.
2018 Madrid JUG Deconstructing REST SecurityBruno Baptista
The learning curve for security is severe and unforgiving. Specifications promise infinite flexibility, habitually give old concepts new names, are riddled with extensions, and almost seem designed to deliberately confuse. For a back-end REST developer, choking all this down for the first time is mission impossible. With an aggressive distaste for fancy terminology, this session delves into OAuth 2.0 as it pertains to REST and shows how it falls into two camps: stateful and stateless. We then detail a competing Amazon-style approach called HTTP Signatures, ideal for B2B scenarios and similar to what is use to secure all Amazon AWS API calls. Each approach will be explored analyzing the architectural differences, with a heavy focus on the wire, showing actual HTTP messages and enough detail to have you thinking, “I could write this myself.”
2017 Devoxx MA Deconstructing and Evolving REST SecurityDavid Blevins
The learning curve for security is severe and unforgiving. Specifications promise infinite flexibility, habitually give old concepts new names, offer endless extensions, and almost seem designed to deliberately confuse. With an eye on architecturual impact, actual HTTP messages, and aggressive distaste for fancy terminology, this session delves into OAuth 2.0 as it pertains to REST and shows how it falls into two camps: stateful and stateless. It then explores a competing Amazon-style approach called HTTP Signatures, ideal for B2B APIs. Finally, it discusses a new internet draft launched this year that combines them both into the perfect two-factor system that could provide a one-stop shop for business as well as mobile REST scenarios.
2018 Boulder JUG Deconstructing and Evolving REST SecurityDavid Blevins
The learning curve for security is severe and unforgiving. Specifications promise infinite flexibility, habitually give old concepts new names, are riddled with extensions, and almost seem designed to deliberately confuse. For a back-end REST developer, choking all this down for the first time is mission impossible. With an aggressive distaste for fancy terminology, this session delves into OAuth 2.0 as it pertains to REST and shows how it falls into two camps: stateful and stateless. We then detail a competing Amazon-style approach called HTTP Signatures, ideal for B2B scenarios and similar to what is use to secure all Amazon AWS API calls. Each approach will be explored analyzing the architectural differences, with a heavy focus on the wire, showing actual HTTP messages and enough detail to have you thinking, "I could write this myself."
As a bonus at the end, well peak into a new IETF Internet Draft launched this year that combines JWT and HTTP Signatures into the perfect two-factor system that could provide a one-stop shop for business as well as mobile REST scenarios. Come to this session if you want to go from novice to expert with a bit of humor, a big picture perspective and wire-level detail.
2018 jPrime Deconstructing and Evolving REST SecurityDavid Blevins
The learning curve for security is severe and unforgiving. Specifications promise infinite flexibility, habitually give old concepts new names, are riddled with extensions, and almost seem designed to deliberately confuse. For a back-end REST developer, choking all this down for the first time is mission impossible. With an aggressive distaste for fancy terminology, this session delves into OAuth 2.0 as it pertains to REST and shows how it falls into two camps: stateful and stateless. We then detail a competing Amazon-style approach called HTTP Signatures, ideal for B2B scenarios and similar to what is use to secure all Amazon AWS API calls. Each approach will be explored analyzing the architectural differences, with a heavy focus on the wire, showing actual HTTP messages and enough detail to have you thinking, "I could write this myself."
As a bonus at the end, well peak into a new IETF Internet Draft launched this year that combines JWT and HTTP Signatures into the perfect two-factor system that could provide a one-stop shop for business as well as mobile REST scenarios. Come to this session if you want to go from novice to expert with a bit of humor, a big picture perspective and wire-level detail.
Serverless and serverfull - where microservices compliments serverlessJudy Breedlove
The document discusses the relationship between serverless and microservices architectures. It provides links to resources for learning about microservices, serverless functions, Istio, and OpenWhisk. Short snippets of code demonstrate how to write actions for OpenWhisk in JavaScript, Python, and Java. The document advocates leveraging third-party services (BaaS) and custom code run in containers (FaaS) to build serverless applications, while microservices can also be integrated through long-running containers and functions.
The Netflix API was originally launched 3 years ago to expose Netflix metadata and services to developers and build applications. It now handles over 1 billion requests per day from over 20,000 developers and 13,000 applications. However, Netflix has undergone many business changes and the API needs to be redesigned to focus on its core streaming business and support international growth. The new design will build a scalable data distribution pipeline to deliver customized, optimized metadata and services to each streaming client and platform. It will use wrappers and response handlers to customize the response for each device and isolate problems. This will allow faster development and reduce the need for versioning across many client types and interfaces.
2018 IterateConf Deconstructing and Evolving REST SecurityDavid Blevins
The learning curve for security is severe and unforgiving. Specifications promise infinite flexibility, habitually give old concepts new names, offer endless extensions, and almost seem designed to deliberately confuse. With an eye on architecturual impact, actual HTTP messages, and aggressive distaste for fancy terminology, this session delves into OAuth 2.0 as it pertains to REST and shows how it falls into two camps: stateful and stateless. It then explores a competing Amazon-style approach called HTTP Signatures, ideal for B2B APIs. Finally, it discusses a new internet draft launched this year that combines them both into the perfect two-factor system that could provide a one-stop shop for business as well as mobile REST scenarios.
- The document discusses API security and common attacks on APIs. It provides an overview of why API security is important given the increasing usage of APIs over traditional web traffic.
- It summarizes the OWASP API Security Top 10 risks and describes some common authentication attacks like password brute forcing and token analysis attacks.
- The document demonstrates several API security issues like broken authorization, mass assignment, and server side request forgery through video examples. It also references real world cases of API attacks.
This document provides an overview of Shubhra Kar's presentation on using Node.js to build APIs and hyperscale the API economy. The presentation discusses using Node.js for mobile/omni-channel backends, high performance ESBs, and IoT. It also covers why Node.js is well-suited for APIs, which Node.js framework to choose, design patterns, and how to code and deploy an API in 10 minutes. The document includes graphs comparing Node.js performance to other solutions and discusses trends around microservices and decomposing monolithic APIs.
Day 2 Kubernetes - Tools for Operability (HashiConf)bridgetkromhout
The document is a transcript of Bridget Kromhout's presentation at #hashiconf about Kubernetes tools for operability. It discusses containers and Kubernetes, tools in the Kubernetes ecosystem like Terraform, AKS, Helm, Draft, Brigade and Kashti, and the future of Kubernetes including changes to Helm 3 and Virtual Kubelet.
apidays LIVE Australia 2020 - From micro to macro-coordination through domain...apidays
apidays LIVE Australia 2020 - Building Business Ecosystems
From micro to macro-coordination through domain-centric DDL pipeline
Alex Khilko, CTO of PlayQ Inc.
The document discusses building serverless applications with Python 3 on AWS Lambda. It begins with introductions and background on serverless computing. It then covers how to create and deploy simple "Hello World" functions with Lambda and API Gateway. It discusses the Chalice framework for Python serverless development and demonstrates deploying a books API. Later sections cover running Python 3 code from Python 2, limits of Lambda, and examples using OpenCV with Lambda.
Jie Liau gave a presentation on API security. The presentation covered how APIs have become a primary attack vector, the OWASP API Security Top 10 risks, real world API attacks on companies like Coinbase, T-Mobile, and Instagram, and tools for testing API security like Postman and Burpsuite. It also provided details on API security issues like broken authentication, authorization, inventory management, and server side request forgery. The goal was to educate attendees on the growing API attack surface and best practices for securing APIs.
This document outlines the development history of the Dissident bot from its creation in January 2017 to June 2018. It discusses improvements made over time including adding conversation mode, a TODO item to develop a Chomsky-Type-1 Grammar AI, and fixing a bug where conversation mode would spam the bot's username. It also provides details on the bot's configuration settings and methods used to detect spam, bots, and politicans spreading misinformation.
Similar to gRPC vs REST: let the battle begin! (20)
Devoxx Belgium 2022 gRPC Cornerstone: HTTP/2… or HTTP/3?Alex Borysov
This document discusses gRPC and HTTP/2. It provides an overview of how gRPC uses HTTP/2 to enable bidirectional streaming between clients and servers. Key topics covered include HTTP/2 streams and frames, gRPC request/response messages over HTTP/2, connection management, and troubleshooting gRPC services.
"gRPC-Web: It’s All About Communication": Devoxx Belgium 2019Alex Borysov
This document summarizes a presentation about gRPC-Web given by Alex Borysov and Yevgen Golubenko. The presentation discusses how gRPC-Web allows for communication between web clients and gRPC backends by translating gRPC requests to HTTP/1 or HTTP/2. It demonstrates a sample gRPC-Web application using Envoy as a proxy to handle the protocol translation. The document also covers topics like API design with protocol buffers, code generation for different platforms, error handling, and server reflection APIs.
"gRPC-Web: It’s All About Communication": Devoxx Ukraine 2019Alex Borysov
This document summarizes a presentation about gRPC-Web given by Alex Borysov and Yevgen Golubenko. The presentation introduces gRPC-Web as a way to enable gRPC communication between web clients and backend services. It demonstrates how to generate gRPC-Web code from protocol buffer definitions, use an Envoy proxy to handle communication over HTTP/1.x, and implement server-side streaming of responses. The presentation also discusses API design with gRPC, tooling for testing and debugging gRPC services, and error handling in gRPC.
"gRPC-Web: It’s All About Communication": Devoxx Ukraine 2019Alex Borysov
This document summarizes a presentation about gRPC-Web given by Alex Borysov and Yevgen Golubenko. The presentation introduced gRPC-Web as a way to enable gRPC communication between web clients and servers. It demonstrated how to define gRPC services with protocol buffers, generate client code for the web with protocol buffer compilation, and use Envoy as a proxy for gRPC-Web requests. The presentation also covered tools, error handling, API changes, and server reflection with gRPC-Web.
OSCON 2019 "Break me if you can: practical guide to building fault-tolerant s...Alex Borysov
Slides for our O'Reilly Open Source Software Conference "Break me if you can: practical guide to building fault-tolerant systems" talk: https://conferences.oreilly.com/oscon/oscon-or/public/schedule/detail/75311
Break me if you can: practical guide to building fault-tolerant systems (with...Alex Borysov
This document summarizes a presentation titled "Break Me If You Can: Practical Guide to Building Fault-Tolerant Systems" given at Devoxx Belgium in November 2018. The presentation discusses building fault tolerance into distributed systems through code and design patterns. It introduces concepts like faults, errors and failures, and provides an example architecture called "Dodging Geese" that incorporates techniques like timeouts and non-blocking calls to upstream services to handle potential faults and slowdowns. The presentation also covers monitoring and tracing distributed requests across services for observability.
"Enabling Googley microservices with gRPC" Riga DevDays 2018 editionAlex Borysov
The document describes a presentation about gRPC (Google's Remote Procedure Call framework) given by Alex Borysov. Some key points:
- gRPC is an open source, high performance RPC framework that uses HTTP/2 for transport. It was developed at Google and is now part of the Cloud Native Computing Foundation.
- It provides language-independent client and server APIs that can be used to define and consume services. Over 10 programming languages are supported.
- Compared to alternatives like JSON/HTTP, gRPC provides much higher throughput and lower latency. It has been shown to provide 3x throughput and 11x better CPU efficiency than JSON/HTTP for Google Cloud Pub/Sub.
- The presentation
"Enabling Googley microservices with gRPC" VoxxedDays Minsk editionAlex Borysov
Alex Borysov presents on enabling microservices with gRPC. gRPC is an open source, high performance RPC framework that uses HTTP/2. It provides abstractions and best practices for designing distributed systems and has default implementations from Google. gRPC supports 10+ programming languages and provides high throughput and low latency compared to REST/JSON solutions. The presentation demonstrates how to define gRPC services with protocol buffers, implement services and clients, and compose services for microservices architectures.
"Enabling Googley microservices with gRPC" at JDK.IO 2017Alex Borysov
The document discusses gRPC, an open-source RPC framework that is high-performance and HTTP/2-based. It provides an overview of gRPC and how it compares to traditional JSON/HTTP approaches. It then demonstrates how to define gRPC services using protocol buffers, generate client/server code, implement a weather service, and call it from both synchronous and asynchronous clients. It also shows how to compose multiple microservices together using gRPC.
"Enabling Googley microservices with gRPC" at JEEConf 2017Alex Borysov
This document summarizes a presentation given by Alex Borysov on enabling microservices with gRPC. gRPC is an open-source, high performance RPC framework that is based on HTTP/2. Borysov discusses what gRPC is, why it provides advantages over JSON/HTTP especially for high throughput services, how to define services with protocol buffers, implement gRPC servers and clients, and develop microservices using gRPC. He provides examples of unary, asynchronous and streaming calls between services.
UiPath Community Day Kraków: Devs4Devs ConferenceUiPathCommunity
We are honored to launch and host this event for our UiPath Polish Community, with the help of our partners - Proservartner!
We certainly hope we have managed to spike your interest in the subjects to be presented and the incredible networking opportunities at hand, too!
Check out our proposed agenda below 👇👇
08:30 ☕ Welcome coffee (30')
09:00 Opening note/ Intro to UiPath Community (10')
Cristina Vidu, Global Manager, Marketing Community @UiPath
Dawid Kot, Digital Transformation Lead @Proservartner
09:10 Cloud migration - Proservartner & DOVISTA case study (30')
Marcin Drozdowski, Automation CoE Manager @DOVISTA
Pawel Kamiński, RPA developer @DOVISTA
Mikolaj Zielinski, UiPath MVP, Senior Solutions Engineer @Proservartner
09:40 From bottlenecks to breakthroughs: Citizen Development in action (25')
Pawel Poplawski, Director, Improvement and Automation @McCormick & Company
Michał Cieślak, Senior Manager, Automation Programs @McCormick & Company
10:05 Next-level bots: API integration in UiPath Studio (30')
Mikolaj Zielinski, UiPath MVP, Senior Solutions Engineer @Proservartner
10:35 ☕ Coffee Break (15')
10:50 Document Understanding with my RPA Companion (45')
Ewa Gruszka, Enterprise Sales Specialist, AI & ML @UiPath
11:35 Power up your Robots: GenAI and GPT in REFramework (45')
Krzysztof Karaszewski, Global RPA Product Manager
12:20 🍕 Lunch Break (1hr)
13:20 From Concept to Quality: UiPath Test Suite for AI-powered Knowledge Bots (30')
Kamil Miśko, UiPath MVP, Senior RPA Developer @Zurich Insurance
13:50 Communications Mining - focus on AI capabilities (30')
Thomasz Wierzbicki, Business Analyst @Office Samurai
14:20 Polish MVP panel: Insights on MVP award achievements and career profiling
The Rise of Supernetwork Data Intensive ComputingLarry Smarr
Invited Remote Lecture to SC21
The International Conference for High Performance Computing, Networking, Storage, and Analysis
St. Louis, Missouri
November 18, 2021
How to Avoid Learning the Linux-Kernel Memory ModelScyllaDB
The Linux-kernel memory model (LKMM) is a powerful tool for developing highly concurrent Linux-kernel code, but it also has a steep learning curve. Wouldn't it be great to get most of LKMM's benefits without the learning curve?
This talk will describe how to do exactly that by using the standard Linux-kernel APIs (locking, reference counting, RCU) along with a simple rules of thumb, thus gaining most of LKMM's power with less learning. And the full LKMM is always there when you need it!
Quality Patents: Patents That Stand the Test of TimeAurora Consulting
Is your patent a vanity piece of paper for your office wall? Or is it a reliable, defendable, assertable, property right? The difference is often quality.
Is your patent simply a transactional cost and a large pile of legal bills for your startup? Or is it a leverageable asset worthy of attracting precious investment dollars, worth its cost in multiples of valuation? The difference is often quality.
Is your patent application only good enough to get through the examination process? Or has it been crafted to stand the tests of time and varied audiences if you later need to assert that document against an infringer, find yourself litigating with it in an Article 3 Court at the hands of a judge and jury, God forbid, end up having to defend its validity at the PTAB, or even needing to use it to block pirated imports at the International Trade Commission? The difference is often quality.
Quality will be our focus for a good chunk of the remainder of this season. What goes into a quality patent, and where possible, how do you get it without breaking the bank?
** Episode Overview **
In this first episode of our quality series, Kristen Hansen and the panel discuss:
⦿ What do we mean when we say patent quality?
⦿ Why is patent quality important?
⦿ How to balance quality and budget
⦿ The importance of searching, continuations, and draftsperson domain expertise
⦿ Very practical tips, tricks, examples, and Kristen’s Musts for drafting quality applications
https://www.aurorapatents.com/patently-strategic-podcast.html
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...Chris Swan
Have you noticed the OpenSSF Scorecard badges on the official Dart and Flutter repos? It's Google's way of showing that they care about security. Practices such as pinning dependencies, branch protection, required reviews, continuous integration tests etc. are measured to provide a score and accompanying badge.
You can do the same for your projects, and this presentation will show you how, with an emphasis on the unique challenges that come up when working with Dart and Flutter.
The session will provide a walkthrough of the steps involved in securing a first repository, and then what it takes to repeat that process across an organization with multiple repos. It will also look at the ongoing maintenance involved once scorecards have been implemented, and how aspects of that maintenance can be better automated to minimize toil.
INDIAN AIR FORCE FIGHTER PLANES LIST.pdfjackson110191
These fighter aircraft have uses outside of traditional combat situations. They are essential in defending India's territorial integrity, averting dangers, and delivering aid to those in need during natural calamities. Additionally, the IAF improves its interoperability and fortifies international military alliances by working together and conducting joint exercises with other air forces.
Quantum Communications Q&A with Gemini LLM. These are based on Shannon's Noisy channel Theorem and offers how the classical theory applies to the quantum world.
GDG Cloud Southlake #34: Neatsun Ziv: Automating AppsecJames Anderson
The lecture titled "Automating AppSec" delves into the critical challenges associated with manual application security (AppSec) processes and outlines strategic approaches for incorporating automation to enhance efficiency, accuracy, and scalability. The lecture is structured to highlight the inherent difficulties in traditional AppSec practices, emphasizing the labor-intensive triage of issues, the complexity of identifying responsible owners for security flaws, and the challenges of implementing security checks within CI/CD pipelines. Furthermore, it provides actionable insights on automating these processes to not only mitigate these pains but also to enable a more proactive and scalable security posture within development cycles.
The Pains of Manual AppSec:
This section will explore the time-consuming and error-prone nature of manually triaging security issues, including the difficulty of prioritizing vulnerabilities based on their actual risk to the organization. It will also discuss the challenges in determining ownership for remediation tasks, a process often complicated by cross-functional teams and microservices architectures. Additionally, the inefficiencies of manual checks within CI/CD gates will be examined, highlighting how they can delay deployments and introduce security risks.
Automating CI/CD Gates:
Here, the focus shifts to the automation of security within the CI/CD pipelines. The lecture will cover methods to seamlessly integrate security tools that automatically scan for vulnerabilities as part of the build process, thereby ensuring that security is a core component of the development lifecycle. Strategies for configuring automated gates that can block or flag builds based on the severity of detected issues will be discussed, ensuring that only secure code progresses through the pipeline.
Triaging Issues with Automation:
This segment addresses how automation can be leveraged to intelligently triage and prioritize security issues. It will cover technologies and methodologies for automatically assessing the context and potential impact of vulnerabilities, facilitating quicker and more accurate decision-making. The use of automated alerting and reporting mechanisms to ensure the right stakeholders are informed in a timely manner will also be discussed.
Identifying Ownership Automatically:
Automating the process of identifying who owns the responsibility for fixing specific security issues is critical for efficient remediation. This part of the lecture will explore tools and practices for mapping vulnerabilities to code owners, leveraging version control and project management tools.
Three Tips to Scale the Shift Left Program:
Finally, the lecture will offer three practical tips for organizations looking to scale their Shift Left security programs. These will include recommendations on fostering a security culture within development teams, employing DevSecOps principles to integrate security throughout the development
Video traffic on the Internet is constantly growing; networked multimedia applications consume a predominant share of the available Internet bandwidth. A major technical breakthrough and enabler in multimedia systems research and of industrial networked multimedia services certainly was the HTTP Adaptive Streaming (HAS) technique. This resulted in the standardization of MPEG Dynamic Adaptive Streaming over HTTP (MPEG-DASH) which, together with HTTP Live Streaming (HLS), is widely used for multimedia delivery in today’s networks. Existing challenges in multimedia systems research deal with the trade-off between (i) the ever-increasing content complexity, (ii) various requirements with respect to time (most importantly, latency), and (iii) quality of experience (QoE). Optimizing towards one aspect usually negatively impacts at least one of the other two aspects if not both. This situation sets the stage for our research work in the ATHENA Christian Doppler (CD) Laboratory (Adaptive Streaming over HTTP and Emerging Networked Multimedia Services; https://athena.itec.aau.at/), jointly funded by public sources and industry. In this talk, we will present selected novel approaches and research results of the first year of the ATHENA CD Lab’s operation. We will highlight HAS-related research on (i) multimedia content provisioning (machine learning for video encoding); (ii) multimedia content delivery (support of edge processing and virtualized network functions for video networking); (iii) multimedia content consumption and end-to-end aspects (player-triggered segment retransmissions to improve video playout quality); and (iv) novel QoE investigations (adaptive point cloud streaming). We will also put the work into the context of international multimedia systems research.
Hire a private investigator to get cell phone recordsHackersList
Learn what private investigators can legally do to obtain cell phone records and track phones, plus ethical considerations and alternatives for addressing privacy concerns.
this resume for sadika shaikh bca studentSadikaShaikh7
I am a dedicated BCA student with a strong foundation in web technologies, including PHP and MySQL. I have hands-on experience in Java and Python, and a solid understanding of data structures. My technical skills are complemented by my ability to learn quickly and adapt to new challenges in the ever-evolving field of computer science.
An invited talk given by Mark Billinghurst on Research Directions for Cross Reality Interfaces. This was given on July 2nd 2024 as part of the 2024 Summer School on Cross Reality in Hagenberg, Austria (July 1st - 7th)
Interaction Latency: Square's User-Centric Mobile Performance MetricScyllaDB
Mobile performance metrics often take inspiration from the backend world and measure resource usage (CPU usage, memory usage, etc) and workload durations (how long a piece of code takes to run).
However, mobile apps are used by humans and the app performance directly impacts their experience, so we should primarily track user-centric mobile performance metrics. Following the lead of tech giants, the mobile industry at large is now adopting the tracking of app launch time and smoothness (jank during motion).
At Square, our customers spend most of their time in the app long after it's launched, and they don't scroll much, so app launch time and smoothness aren't critical metrics. What should we track instead?
This talk will introduce you to Interaction Latency, a user-centric mobile performance metric inspired from the Web Vital metric Interaction to Next Paint"" (web.dev/inp). We'll go over why apps need to track this, how to properly implement its tracking (it's tricky!), how to aggregate this metric and what thresholds you should target.
How RPA Help in the Transportation and Logistics Industry.pptxSynapseIndia
Revolutionize your transportation processes with our cutting-edge RPA software. Automate repetitive tasks, reduce costs, and enhance efficiency in the logistics sector with our advanced solutions.
Sustainability requires ingenuity and stewardship. Did you know Pigging Solutions pigging systems help you achieve your sustainable manufacturing goals AND provide rapid return on investment.
How? Our systems recover over 99% of product in transfer piping. Recovering trapped product from transfer lines that would otherwise become flush-waste, means you can increase batch yields and eliminate flush waste. From raw materials to finished product, if you can pump it, we can pig it.
For the full video of this presentation, please visit: https://www.edge-ai-vision.com/2024/07/intels-approach-to-operationalizing-ai-in-the-manufacturing-sector-a-presentation-from-intel/
Tara Thimmanaik, AI Systems and Solutions Architect at Intel, presents the “Intel’s Approach to Operationalizing AI in the Manufacturing Sector,” tutorial at the May 2024 Embedded Vision Summit.
AI at the edge is powering a revolution in industrial IoT, from real-time processing and analytics that drive greater efficiency and learning to predictive maintenance. Intel is focused on developing tools and assets to help domain experts operationalize AI-based solutions in their fields of expertise.
In this talk, Thimmanaik explains how Intel’s software platforms simplify labor-intensive data upload, labeling, training, model optimization and retraining tasks. She shows how domain experts can quickly build vision models for a wide range of processes—detecting defective parts on a production line, reducing downtime on the factory floor, automating inventory management and other digitization and automation projects. And she introduces Intel-provided edge computing assets that empower faster localized insights and decisions, improving labor productivity through easy-to-use AI tools that democratize AI.
Data Protection in a Connected World: Sovereignty and Cyber Securityanupriti
Delve into the critical intersection of data sovereignty and cyber security in this presentation. Explore unconventional cyber threat vectors and strategies to safeguard data integrity and sovereignty in an increasingly interconnected world. Gain insights into emerging threats and proactive defense measures essential for modern digital ecosystems.
Data Protection in a Connected World: Sovereignty and Cyber Security
gRPC vs REST: let the battle begin!
1. gRPC vs REST: let the battle begin!
Devoxx, November 9, 2017
Alex Borysov, Software Engineer @ Google
Mykyta Protsenko, Software Engineer @ Roku
2. Who are we?
Mykyta Protsenko
Software Engineer @ Roku
• passionate about all things scalable
• 18+ years in software engineering
• Author of Henka
REST vs gRPC
Alex Borysov
Software Engineer @ Google
• large scale systems developer
• 11+ years in software engineering
• Active gRPC user
REST vs gRPC
@aiborisov
@mykyta_p
5. I am getting frustrated by the number of people calling any
HTTP-based interface a REST API.
Roy Fielding
http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven
@aiborisov
@mykyta_p
10. What is gRPC?
gRPC stands for gRPC Remote Procedure Calls.
A high performance, general purpose, feature-rich
RPC framework.
Part of Cloud Native Computing Foundation cncf.io
HTTP/2 and mobile first.
Open sourced version of Stubby RPC used in Google.
@aiborisov
@mykyta_p
12. gRPC is not RMI
Maitainability
Ease of use
Performance
Scalability
L
e
s
s
o
n
s
Years of using Stubby
@aiborisov
@mykyta_p
13. What is gRPC?
Abstractions and best practices on how to design
RPCs.
Default implementation(s) from Google.
Extension points to plug custom implementations and
modifications.
Supports 10+ programming languages.
@aiborisov
@mykyta_p
20. Microservices?
How to draw an owl?
How to build microservices?
Draw some circles.
Take XYZ framework.
@aiborisov
@mykyta_p
21. Microservices?
How to draw an owl?
How to build microservices?
Draw the REST of the owlDraw some circles.
Take XYZ framework.
@aiborisov
@mykyta_p
22. Microservices?
How to draw an owl?
How to build microservices?
Draw the REST of the owl
Write your microservices!
Draw some circles.
Take XYZ framework.
@aiborisov
@mykyta_p
39. A distributed system is one in which the failure of a
computer you didn't even know existed can render your own
computer unusable.
Leslie Lamport, 1987
https://www.microsoft.com/en-us/research/wp-content/uploads/2016/12/Distribution.pdf
@aiborisov
@mykyta_p
49. REST: Service
public class AggregatingService {
public AggregatedContent fetch(int id) {
...
return new AggregatedContent(...);
}
}
public class AggregatedContent {
private Integer id;
private String type;
private String content;
private Integer nextId;
@aiborisov
@mykyta_p
50. REST: Service
public class AggregatingService {
public AggregatedContent fetch(int id) {
...
return new AggregatedContent(...);
}
}
public class AggregatedContent {
private Integer id;
private String type;
private String content;
private Integer nextId;
@aiborisov
@mykyta_p
51. REST: Service
public class AggregatingService {
public AggregatedContent fetch(int id) {
...
return new AggregatedContent(...);
}
}
public class AggregatedContent {
private Integer id; // 115
private String type; // BigData
private String content; // Flink
private Integer nextId; // 116
@aiborisov
@mykyta_p
52. REST: Service
public class AggregatingService {
public AggregatedContent fetch(int id) {
...
return new AggregatedContent(...);
}
}
public class AggregatedContent {
private Integer id; // 115
private String type; // BigData
private String content; // Flink
private Integer nextId; // 116
@aiborisov
@mykyta_p
53. REST: Controller
@GetMapping(
value = "/content/{id}",
produces = "application/json")
public AggregatedContent aggregated(@PathVariable("id") int id) {
return aggregatingService.fetch(id);
}
@aiborisov
@mykyta_p
54. REST: It’s All About Resources
@GetMapping(
value = "/content/{id}",
produces = "application/json")
public AggregatedContent aggregated(@PathVariable("id") int id) {
return aggregatingService.fetch(id);
}
@aiborisov
@mykyta_p
68. Implement gRPC Service
public class AggregationService extends AggregationServiceImplBase {
@Override
public void get(AggregationRequest request,
StreamObserver<AggregationResponse> responseObserver) {
}
}
@aiborisov
@mykyta_p
69. Implement gRPC Service
public class AggregationService extends AggregationServiceImplBase {
@Override
public void get(AggregationRequest request,
StreamObserver<AggregationResponse> responseObserver) {
}
}
70. Implement gRPC Service
public class AggregationService extends AggregationServiceImplBase {
@Override
public void get(AggregationRequest request,
StreamObserver<AggregationResponse> responseObserver) {
}
}
@aiborisov
@mykyta_p
71. Thread #X
Thread ...
Thread #7
Thread #6
Thread #5
Thread #4
Blocking API (aka Thread-per-Request)?
Thread #3
Thread #2
Thread #1
Thread pool
of size X
@aiborisov
@mykyta_p
72. Thread #X
Thread ...
Thread #7
Thread #6
Thread #5
Thread #4
Blocking API (aka Thread-per-Request)?
Thread #3
Thread #2
Thread #1
Thread pool
of size X
1
@aiborisov
@mykyta_p
73. Thread #X
Thread ...
Thread #7
Thread #6
Thread #5
Thread #4
Blocking API (aka Thread-per-Request)?
Thread #3
Thread #2
Thread #1
Thread pool
of size X
1
2
@aiborisov
@mykyta_p
74. Thread #X
Thread ...
Thread #7
Thread #6
Thread #5
Thread #4
Blocking API (aka Thread-per-Request)?
Thread #3
Thread #2
Thread #1
Thread pool
of size X
1
2
3
@aiborisov
@mykyta_p
75. Thread #X
Thread ...
Thread #7
Thread #6
Thread #5
Thread #4
Thread #3
Thread #2
Blocking API (aka Thread-per-Request)?
Thread #1
Thread pool
of size X
1
2
3
X
. . .
@aiborisov
@mykyta_p
76. Thread #X
Thread ...
Thread #7
Thread #6
Thread #5
Thread #4
Thread #3
Thread #2
Blocking API (aka Thread-per-Request)?
Thread #1
Thread pool
of size X
1
2
3
X
. . .
X + 1
@aiborisov
@mykyta_p
77. Thread #X
Thread ...
Thread #7
Thread #6
Thread #5
Thread #4
Thread #3
Thread #2
Blocking API (aka Thread-per-Request)?
Thread #1
Thread pool
of size X
1
2
3
X
. . .
X + 1
@aiborisov
@mykyta_p
78. Implement gRPC Service
public class AggregationService extends AggregationServiceImplBase {
@Override
public void get(AggregationRequest request,
StreamObserver<AggregationResponse> responseObserver) {
}
}
@aiborisov
@mykyta_p
79. Implement gRPC Service
public class AggregationService extends AggregationServiceImplBase {
@Override
public void get(AggregationRequest request,
public interface StreamObserver<AggregationResponse> responseObserver){{
void onNext(AggregationResponse response);
void onCompleted();
void onError(Throwable error);
}
}
}
@aiborisov
@mykyta_p
96. Streaming gRPC Service
public class AggregationService extends AggregationServiceImplBase {
private final Collection<ContentServiceStub> contentStubs;
public AggregationService(Collection<ContentServiceStub> contentStubs) {
this.contentStubs = contentStubs;
}
...
@aiborisov
@mykyta_p
97. Streaming gRPC Service
public class AggregationService extends AggregationServiceImplBase {
@Override
public void subscribe(AggregationRequest request,StreamObserver<AggregationResponse> responseObserver) {
contentStubs.forEach(stub -> { stub.subscribe(ContentRequest.getDefaultInstance(),
new StreamObserver<ContentResponse>() {
@Override
public void onNext(ContentResponse response) {
...
}
@Override
public void onError(Throwable error) {
responseObserver.onError(error);
}
@Override
public void onCompleted() {}
});
});
}
@aiborisov
@mykyta_p
98. Streaming gRPC Service
public class AggregationService extends AggregationServiceImplBase {
@Override
public void subscribe(AggregationRequest request,StreamObserver<AggregationResponse> responseObserver) {
contentStubs.forEach(stub -> { stub.subscribe(ContentRequest.getDefaultInstance(),
new StreamObserver<ContentResponse>() {
@Override
public void onNext(ContentResponse response) {
...
}
@Override
public void onError(Throwable error) {
responseObserver.onError(error);
}
@Override
public void onCompleted() {}
});
});
}
@aiborisov
@mykyta_p
99. Streaming gRPC Service
public class AggregationService extends AggregationServiceImplBase {
@Override
public void subscribe(AggregationRequest request,StreamObserver<AggregationResponse> responseObserver) {
contentStubs.forEach(stub -> { stub.subscribe(ContentRequest.getDefaultInstance(),
new StreamObserver<ContentResponse>() {
@Override
public void onNext(ContentResponse response) {
...
}
@Override
public void onError(Throwable error) {
responseObserver.onError(error);
}
@Override
public void onCompleted() {}
});
});
}
@aiborisov
@mykyta_p
100. Streaming gRPC Service
public class AggregationService extends AggregationServiceImplBase {
@Override
public void subscribe(AggregationRequest request,StreamObserver<AggregationResponse> responseObserver) {
contentStubs.forEach(stub -> { stub.subscribe(ContentRequest.getDefaultInstance(),
new StreamObserver<ContentResponse>() {
@Override
public void onNext(ContentResponse response) {
...
}
@Override
public void onError(Throwable error) {
responseObserver.onError(error);
}
@Override
public void onCompleted() {}
});
});
}
@aiborisov
@mykyta_p
101. Streaming gRPC Service
public class AggregationService extends AggregationServiceImplBase {
@Override
public void subscribe(AggregationRequest request,StreamObserver<AggregationResponse> responseObserver) {
contentStubs.forEach(stub -> { stub.subscribe(ContentRequest.getDefaultInstance(),
new StreamObserver<ContentResponse>() {
@Override
public void onNext(ContentResponse response) {
ResponseType type = typeForStub(stub);
int aggregationId = aggregationId(response.getId(), type);
AggregationResponse aggrResponse =
AggregationResponse.newBuilder()
.setContent(response.getContent()).setId(aggregationId).
.setType(type).build();
responseObserver.onNext(aggrResponse);
}
});
});
}
@aiborisov
@mykyta_p
102. Streaming gRPC Service
public class AggregationService extends AggregationServiceImplBase {
@Override
public void subscribe(AggregationRequest request,StreamObserver<AggregationResponse> responseObserver) {
contentStubs.forEach(stub -> { stub.subscribe(ContentRequest.getDefaultInstance(),
new StreamObserver<ContentResponse>() {
@Override
public void onNext(ContentResponse response) {
ResponseType type = typeForStub(stub);
int aggregationId = aggregationId(response.getId(), type);
AggregationResponse aggrResponse =
AggregationResponse.newBuilder()
.setContent(response.getContent()).setId(aggregationId).
.setType(type).build();
responseObserver.onNext(aggrResponse);
}
});
});
}
@aiborisov
@mykyta_p
128. Serverless
pay as you go
Func
Funcinput
...
Func
input
...
input
@aiborisov
@mykyta_p
129. All about resources
IDL optional
Synchronous by default
Unary
Perfect fit for serverless
All about APIs
IDL centric
Asynchronous by nature
Streaming or Unary
Performance first
REST gRPC
@aiborisov
@mykyta_p
186. All about resources
Synchronous and unary
Simplicity first
External fault-tolerance
Production ready
All about APIs
Async and streaming
Performance first
Built-in fault-tolerance
Production ready
REST gRPC
@aiborisov
@mykyta_p
187. All about resources
Synchronous and unary
Simplicity first
External fault-tolerance
Production ready
All about APIs
Async and streaming
Performance first
Built-in fault-tolerance
Production ready
REST gRPC
Be pragmatic,
start with your problem!
@aiborisov
@mykyta_p