How we use Go to build APIs PubNative best practices and patterns. Kostiantyn Stepaniuk PubNative GmbH

Size: px
Start display at page:

Download "How we use Go to build APIs PubNative best practices and patterns. Kostiantyn Stepaniuk PubNative GmbH"

Transcription

1 How we use Go to build APIs PubNative best practices and patterns Kostiantyn Stepaniuk PubNative GmbH

2 1/17 About PubNative Adtech company which connects publishers and advertisers through its technology First line of the API code was written in December 2013 in Ruby In November 2014 we migrated to Go API and supportive utilities have 200K lines of Go code We process 12M req/min Response time below 100ms We are connected to 197 partners with who we are doing real-time auction At a peak, we send 12M*197=2.364B outbound req/min

3 2/17 What challenges we have Competitive: cost-e cient and high-performing Resilient: survives the outage of any used service, DB, queue, cache, etc. Quick TTM: 1-2 products/year Productivity: 3043 PRs closed since 2013 or 2 PRs/day E ciency: product/tech task split 85/15, developing by 4 people (of 14 engineers)

4 3/17 How we do it Make it simple Make it boring Focus on what matters

5 4/17 Learn techniques Painted in 1897 by 15-year-old boy

6 5/17 And then improve Painted in 1955 by our 74-year-old boy :)

7 6/17 Use the same structure

8 7/17 Full control over HTTP protocol http.handlefunc("/handle/b", func(http.responsewriter, *http.request) {) http.handlefunc("/handle/a", func(http.responsewriter, *http.request) {) http.handlefunc("/basic_auth", func(w http.responsewriter, r *http.request) { usr, pwd, _ := r.basicauth() if usr!= "user" pwd!= "password" { w.header().set("www-authenticate", `Basic realm="application"`) w.writeheader(401) ) No powerful URL routers like gorilla/mux ( because of performance penalty and decreasing clarity. Go provides all the necessary wrappers Don't carry parameters in the path, use a query string or a request payload We need to know what happens under the hood to optimize

9 8/17 Use explicit types, avoid interfaces type App struct { Redis *redis.client // explicit name HB *honeybadger.client //commonly used abbreviation We solve speci c problems with concrete tools Clear understanding what is used and how Renaming can be done in one command in your favorite editor type ObjectA struct{ // Do we really need to have one interface? type ObjectB struct{ // Or we can keep them separately func (o ObjectA) Run(task int) bool { func (o ObjectB) Do(task int) bool { Got a challenge, try to solve it in the best way possible and then think of generalizing, not another way around

10 9/17 One way of doing things type A struct { B B type B struct { C C type C struct { D string a := A{ a.b.c.d // access D through chain a.getd() // NO helper methods a.c.d // NO aliases It also applies how to create pools, integrates 3rd parties or writes tests, etc.

11 10/17 Own pool of workers instead of what libraries provide func main() { pool := 10 ch := make(chan string, pool+10) // how many messages keep in a memory before taking an action for i := 0; i < pool; i++ { conn, err := redis.dial("tcp", ":6379") // connection per worker _ = err // handle error go func() { conn.do("hset", "hash", <-ch, 1) () Know how many connections are used No hidden bottlenecks, e.g., locks are used to manage the pool Easy to pro le the pool

12 11/17 Reserve a worker for a task func main() { jobs := make(chan chan int) // first chan to reserve a worker, second one to send a task for i := 0; i < 2; i++ { go worker(jobs) for i := 0; i < 10; i++ { job := make(chan int) select { case jobs <- job: fmt.println("reserve worker for task:", i) job <- i // build and send the task default: fmt.println("drop task:", i) func worker(jobs chan chan int) { for job := range jobs { task := <- job fmt.println("done task:", task)

13 12/17 Prefer non-blocking sending select { case ch1 <- "value1": // strategy 1 case ch2 <- "value2": // strategy 2 default: // take an action No time.after to control the pool Use bu ered channels for backpressure

14 13/17 Requirements for the pool Worker must know how to restart itself Fixed size of the pool and adjust per instance type Send metrics to centralized location and keep the current state on the instance What to pro le: How long does it take to process the task How many workers are busy right now What was the maximum number of concurrently occupied workers during lifetime of the process

15 14/17 Single bu er type A struct { B int; _ int func main() { profile(func(){ for i := 0; i < 10; i++ { list := make([]*a, 1000) for i := 0; i < 1000; i++ { list[i] = &A{B: i ) func profile(fn func()){ o := new(runtime.memstats) runtime.readmemstats(o) fn() n := new(runtime.memstats) runtime.readmemstats(n) fmt.printf("objects %v alloc %v", n.heapobjects-o.heapobjects, n.heapalloc - o.heapalloc)

16 15/17 Double bu ers func main() { profile(func(){ lists := make([][]*a, 2) lists[0] = make([]*a, 1000) lists[1] = make([]*a, 1000) for x := 0; x < 5; x++ { for y := 0; y < 1000; y++ { a := lists[0][y] if a == nil { a = &A{ a.b = x*y lists[0][y] = a ) lists[0], lists[1] = lists[1], lists[0]

17 16/17 Sometimes we have to write our library pubnative/mysqldriver-go ( GC optimized MySQL driver pubnative/mysqlproto-go ( Heap friendly implementation of the MySQL protocol

18 17/17 Keep the test code in one function func TestMyFunc(t *testing.t) { // 1. setup test // 2. define and execute test cases // 3. cleanup Keep tests straightforward, reading from top to bottom you should be able to understand how the code performs and what are requirements for it No helpers and abstractions in the test code De ne what's required to execute the code you test, nothing more

19 Thank you Kostiantyn Stepaniuk PubNative GmbH

go get my/vulnerabilities Green threads are not eco friendly threads

go get my/vulnerabilities Green threads are not eco friendly threads go get my/vulnerabilities Green threads are not eco friendly threads 1 Who ( Web Mobile ) penetration tester Code reviewer Programmer Roberto Clapis @empijei 2 Go Google s language Born in 2007 (quite

More information

Go Concurrent Programming. QCon2018 Beijing

Go Concurrent Programming. QCon2018 Beijing Go Concurrent Programming chao.cai@mobvista.com QCon2018 Beijing Shared Memory Model Shared Memory Model class Worker implements Runnable{ private volatile boolean isrunning = false; @Override public void

More information

and indeed live most of our lives online. Whether we are enterprise users or endpoint consumers, our digital experiences are increasingly delivered

and indeed live most of our lives online. Whether we are enterprise users or endpoint consumers, our digital experiences are increasingly delivered 1 lchannel Introduction := make(chan ControlMessage);work ercompletechan := make(chan bool); statusp ollchannel Digital security := has make(chan never taken on greater urgency. chan Today we bool); live

More information

Go Programming. Russ Cox and Rob Pike May 20, 2010

Go Programming. Russ Cox and Rob Pike May 20, 2010 Go Programming Russ Cox and Rob Pike May 20, 2010 Live waving View live notes and ask questions about this session on Google Wave: http://bit.ly/go2010io 3 Go is different Go is more unusual than you might

More information

Vitess. github.com/youtube/vitess

Vitess. github.com/youtube/vitess Vitess github.com/youtube/vitess What is Vitess A scalable and efficient storage solution for the web Tools Clone, remaster, sharding, split, etc. Servers Optimize MySQL performance The sweet spot Relational

More information

Santiago Documentation

Santiago Documentation Santiago Documentation Release 1.2.0 Top Free Games November 07, 2016 Contents 1 Overview 3 1.1 Getting started.............................................. 3 1.2 Features..................................................

More information

Catalyst. Uber s Serverless Platform. Shawn Burke - Staff Engineer Uber Seattle

Catalyst. Uber s Serverless Platform. Shawn Burke - Staff Engineer Uber Seattle Catalyst Uber s Serverless Platform Shawn Burke - Staff Engineer Uber Seattle Why Serverless? Complexity! Microservices, Languages, Client Libs, Tools Product teams have basic infrastructure needs Stable,

More information

Go Forth and Code. Jonathan Gertig. CSC 415: Programing Languages. Dr. Lyle

Go Forth and Code. Jonathan Gertig. CSC 415: Programing Languages. Dr. Lyle J o n a t h a n G e r t i g P a g e 1 Go Forth and Code Jonathan Gertig CSC 415: Programing Languages Dr. Lyle 2013 J o n a t h a n G e r t i g P a g e 2 Go dogs Go or A Brief History of Go 6 years ago

More information

Distributed Systems. Fall 2017 Exam 3 Review. Paul Krzyzanowski. Rutgers University. Fall 2017

Distributed Systems. Fall 2017 Exam 3 Review. Paul Krzyzanowski. Rutgers University. Fall 2017 Distributed Systems Fall 2017 Exam 3 Review Paul Krzyzanowski Rutgers University Fall 2017 December 11, 2017 CS 417 2017 Paul Krzyzanowski 1 Question 1 The core task of the user s map function within a

More information

GO CONCURRENCY BASICS AND PATTERNS EXPLAINED IN COLOR

GO CONCURRENCY BASICS AND PATTERNS EXPLAINED IN COLOR GO CONCURRENCY BASICS AND PATTERNS EXPLAINED IN COLOR REVISION 1 HAWTHORNE-PRESS.COM Go Concurrency Basics Explained In Color Published by Hawthorne-Press.com 916 Adele Street Houston, Texas 77009, USA

More information

June 27, 2014 EuroClojure 2014 Krakow, Poland. Components. Just Enough

June 27, 2014 EuroClojure 2014 Krakow, Poland. Components. Just Enough June 27, 2014 EuroClojure 2014 Krakow, Poland Components Just Enough Structure @stuartsierra Presentation Business Logic DB SMS Email Presentation Thread Pool Business Logic Queues Public API Private API

More information

Typical Issues with Middleware

Typical Issues with Middleware Typical Issues with Middleware HrOUG 2016 Timur Akhmadeev October 2016 About Me Database Consultant at Pythian 10+ years with Database and Java Systems Performance and Architecture OakTable member 3 rd

More information

From the event loop to the distributed system. Martyn 3rd November, 2011

From the event loop to the distributed system. Martyn 3rd November, 2011 From the event loop to the distributed system Martyn Loughran martyn@pusher.com @mloughran 3rd November, 2011 From the event loop to the distributed system From the event loop to the distributed system

More information

Lessons learnt building Kubernetes controllers. David Cheney - Heptio

Lessons learnt building Kubernetes controllers. David Cheney - Heptio Lessons learnt building Kubernetes controllers David Cheney - Heptio g day Contour A Kubernetes Ingress Controller Connaissez-vous Kubernetes? Kubernetes in one slide Replicated data store; etcd API

More information

The Gearman Cookbook OSCON Eric Day Senior Software Rackspace

The Gearman Cookbook OSCON Eric Day  Senior Software Rackspace The Gearman Cookbook OSCON 2010 Eric Day http://oddments.org/ Senior Software Engineer @ Rackspace Thanks for being here! OSCON 2010 The Gearman Cookbook 2 Ask questions! Grab a mic for long questions.

More information

Lessons learnt building Kubernetes controllers. David Cheney - Heptio

Lessons learnt building Kubernetes controllers. David Cheney - Heptio Lessons learnt building Kubernetes controllers David Cheney - Heptio g day Craig McLuckie and Joe Beda 2/3rds of a pod Connaissez-vous Kubernetes? Kubernetes is an open-source system for automating deployment,

More information

Go on NetBSD (and pkgsrc!) A modern systems programming language 23 March Benny Siegert Google Switzerland; The NetBSD Foundation

Go on NetBSD (and pkgsrc!) A modern systems programming language 23 March Benny Siegert Google Switzerland; The NetBSD Foundation Go on NetBSD (and pkgsrc!) A modern systems programming language 23 March 2013 Benny Siegert Google Switzerland; The NetBSD Foundation Agenda What is Go? Building Go code with the gotool Running Go code

More information

Course Outline. Lesson 2, Azure Portals, describes the two current portals that are available for managing Azure subscriptions and services.

Course Outline. Lesson 2, Azure Portals, describes the two current portals that are available for managing Azure subscriptions and services. Course Outline Module 1: Overview of the Microsoft Azure Platform Microsoft Azure provides a collection of services that you can use as building blocks for your cloud applications. Lesson 1, Azure Services,

More information

Chapter 3 LAN Configuration

Chapter 3 LAN Configuration Chapter 3 LAN Configuration This chapter describes how to configure the advanced LAN features of your ProSafe Dual WAN Gigabit Firewall with SSL & IPsec VPN. This chapter contains the following sections

More information

CSE 120 Principles of Operating Systems

CSE 120 Principles of Operating Systems CSE 120 Principles of Operating Systems Spring 2018 Lecture 15: Multicore Geoffrey M. Voelker Multicore Operating Systems We have generally discussed operating systems concepts independent of the number

More information

Concurrency in Go 9/22/17

Concurrency in Go 9/22/17 Concurrency in Go 9/22/17 Outline Mapreduce (15 mins) Two synchronization mechanisms Locks (15 mins) Channels (20 mins) Application: Word count Hello my love. I love you, my dear. Goodbye. hello: 1, my:

More information

Go Language September 2016

Go Language September 2016 Go Language September 2016 Giacomo Tartari PhD student, University of Tromsø http://127.0.0.1:3999/golang2016.slide#34 1/53 Go http://127.0.0.1:3999/golang2016.slide#34 2/53 Why? Rob Pike's take (one of

More information

Vulkan: Scaling to Multiple Threads. Kevin sun Lead Developer Support Engineer, APAC PowerVR Graphics

Vulkan: Scaling to Multiple Threads. Kevin sun Lead Developer Support Engineer, APAC PowerVR Graphics Vulkan: Scaling to Multiple Threads Kevin sun Lead Developer Support Engineer, APAC PowerVR Graphics www.imgtec.com Introduction Who am I? Kevin Sun Working at Imagination Technologies Take responsibility

More information

App Engine: Datastore Introduction

App Engine: Datastore Introduction App Engine: Datastore Introduction Part 1 Another very useful course: https://www.udacity.com/course/developing-scalableapps-in-java--ud859 1 Topics cover in this lesson What is Datastore? Datastore and

More information

Print Release Client. Deployment Guide PrinterOn Corporation

Print Release Client. Deployment Guide PrinterOn Corporation Print Release Client Deployment Guide 2009 PrinterOn Corporation Table of Contents Table of Contents Introduction...3 1 Requirements...4 1.1 Hardware Requirements... 4 1.2 Software Requirements... 4 2

More information

Azure Development Course

Azure Development Course Azure Development Course About This Course This section provides a brief description of the course, audience, suggested prerequisites, and course objectives. COURSE DESCRIPTION This course is intended

More information

10/26/2017 Universal Java GC analysis tool - Java Garbage collection log analysis made easy

10/26/2017 Universal Java GC analysis tool - Java Garbage collection log analysis made easy Analysis Report GC log le: atlassian-jira-gc-2017-10-26_0012.log.0.current Duration: 14 hrs 59 min 51 sec System Time greater than User Time In 25 GC event(s), 'sys' time is greater than 'usr' time. It's

More information

Using DPDK with Go. Takanari Hayama Technology Consulting Company IGEL Co.,Ltd.

Using DPDK with Go. Takanari Hayama Technology Consulting Company IGEL Co.,Ltd. Using DPDK with Go Technology Consulting Company Research, Development & Global Standard Takanari Hayama taki@igel.co.jp Technology Consulting Company IGEL Co.,Ltd. 1 BACKGROUND 2017/9/26,27 DPDK Summit

More information

Is Your Project in Trouble on System Performance?

Is Your Project in Trouble on System Performance? Is Your Project in Trouble on System Performance? Charles Chow May 2017 Is SATURN Your Project 2017 in Trouble - Is Your on System Project Performance? in Trouble on System Performance? May 2017 1 4, [Copyright

More information

ProxySQL's Internals

ProxySQL's Internals ProxySQL's Internals What is ProxySQL? A "Layer 7" database proxy MySQL / ClickHouse protocol aware High Performance High Availability Architecture Overview Clients connect to ProxySQL Requests are evaluated

More information

Cache memories are small, fast SRAM-based memories managed automatically in hardware. Hold frequently accessed blocks of main memory

Cache memories are small, fast SRAM-based memories managed automatically in hardware. Hold frequently accessed blocks of main memory Cache Memories Cache memories are small, fast SRAM-based memories managed automatically in hardware. Hold frequently accessed blocks of main memory CPU looks first for data in caches (e.g., L1, L2, and

More information

+ + a journey to zero-downtime

+ + a journey to zero-downtime + + a journey to zero-downtime James Halsall Technical Team Lead @ Inviqa Christian Dornhoff Head of IT (cross-channel) @ toom A bit about toom baumarkt One of Germany s biggest DIY companies Annual turnover

More information

Chapter 9 :: Subroutines and Control Abstraction

Chapter 9 :: Subroutines and Control Abstraction Chapter 9 :: Subroutines and Control Abstraction Programming Language Pragmatics, Fourth Edition Michael L. Scott Copyright 2016 Elsevier 1 Chapter09_Subroutines_and_Control_Abstraction_4e - Tue November

More information

Rsyslog: going up from 40K messages per second to 250K. Rainer Gerhards

Rsyslog: going up from 40K messages per second to 250K. Rainer Gerhards Rsyslog: going up from 40K messages per second to 250K Rainer Gerhards What's in it for you? Bad news: will not teach you to make your kernel component five times faster Perspective user-space application

More information

Charity

Charity Charity Majors @mipsytipsy Charity Majors @mipsytipsy @mipsytipsy Production Engineering Manager @ FB Operations Engineer Accidental DBA Hates software (all of it) Mobile Backend Powers >500k apps MongoDB,

More information

libvnf: building VNFs made easy

libvnf: building VNFs made easy libvnf: building VNFs made easy Priyanka Naik, Akash Kanase, Trishal Patel, Mythili Vutukuru Dept. of Computer Science and Engineering Indian Institute of Technology, Bombay SoCC 18 11 th October, 2018

More information

BeBanjo Infrastructure and Security Overview

BeBanjo Infrastructure and Security Overview BeBanjo Infrastructure and Security Overview Can you trust Software-as-a-Service (SaaS) to run your business? Is your data safe in the cloud? At BeBanjo, we firmly believe that SaaS delivers great benefits

More information

RFC 003 Event Service October Computer Science Department October 2001 Request for Comments: 0003 Obsoletes: none.

RFC 003 Event Service October Computer Science Department October 2001 Request for Comments: 0003 Obsoletes: none. Ubiquitous Computing Bhaskar Borthakur University of Illinois at Urbana-Champaign Software Research Group Computer Science Department October 2001 Request for Comments: 0003 Obsoletes: none The Event Service

More information

Here, we consider Database bottleneck as a problem and provide solution for some of common problems.

Here, we consider Database bottleneck as a problem and provide solution for some of common problems. Enhancing EHR Performance for Better Business Outcomes Business Problem An EHR with high volume of data and users often complains about performance glitches in certain sections of an application. Different

More information

Transactional Consistency and Automatic Management in an Application Data Cache Dan R. K. Ports MIT CSAIL

Transactional Consistency and Automatic Management in an Application Data Cache Dan R. K. Ports MIT CSAIL Transactional Consistency and Automatic Management in an Application Data Cache Dan R. K. Ports MIT CSAIL joint work with Austin Clements Irene Zhang Samuel Madden Barbara Liskov Applications are increasingly

More information

Course Outline. Developing Microsoft Azure Solutions Course 20532C: 4 days Instructor Led

Course Outline. Developing Microsoft Azure Solutions Course 20532C: 4 days Instructor Led Developing Microsoft Azure Solutions Course 20532C: 4 days Instructor Led About this course This course is intended for students who have experience building ASP.NET and C# applications. Students will

More information

A Third Look At ML. Chapter Nine Modern Programming Languages, 2nd ed. 1

A Third Look At ML. Chapter Nine Modern Programming Languages, 2nd ed. 1 A Third Look At ML Chapter Nine Modern Programming Languages, 2nd ed. 1 Outline More pattern matching Function values and anonymous functions Higher-order functions and currying Predefined higher-order

More information

TrafficDB: HERE s High Performance Shared-Memory Data Store Ricardo Fernandes, Piotr Zaczkowski, Bernd Göttler, Conor Ettinoffe, and Anis Moussa

TrafficDB: HERE s High Performance Shared-Memory Data Store Ricardo Fernandes, Piotr Zaczkowski, Bernd Göttler, Conor Ettinoffe, and Anis Moussa TrafficDB: HERE s High Performance Shared-Memory Data Store Ricardo Fernandes, Piotr Zaczkowski, Bernd Göttler, Conor Ettinoffe, and Anis Moussa EPL646: Advanced Topics in Databases Christos Hadjistyllis

More information

Huge market -- essentially all high performance databases work this way

Huge market -- essentially all high performance databases work this way 11/5/2017 Lecture 16 -- Parallel & Distributed Databases Parallel/distributed databases: goal provide exactly the same API (SQL) and abstractions (relational tables), but partition data across a bunch

More information

Developing Enterprise Cloud Solutions with Azure

Developing Enterprise Cloud Solutions with Azure Developing Enterprise Cloud Solutions with Azure Java Focused 5 Day Course AUDIENCE FORMAT Developers and Software Architects Instructor-led with hands-on labs LEVEL 300 COURSE DESCRIPTION This course

More information

Ldap Error Code 2 - Protocol_error The Server Will Disconnect

Ldap Error Code 2 - Protocol_error The Server Will Disconnect Ldap Error Code 2 - Protocol_error The Server Will Disconnect ApacheDS embedding into an application getting (LDAP: error code 2 - PROTOCOL_ERROR: The server will disconnect!) I have embedded ApacheDS

More information

MICHIEL ROOK DATABASE MIGRATIONS WITHOUT DOWN TIME

MICHIEL ROOK DATABASE MIGRATIONS WITHOUT DOWN TIME MICHIEL ROOK DATABASE MIGRATIONS WITHOUT DOWN TIME @michieltcs Developer, consultant, trainer, speaker @michieltcs ABOUT DATABASE MIGRATIONS ABOUT SCHEMA MIGRATIONS SQL UP @michieltcs UP DOWN @michieltcs

More information

Sessions. Mendel Rosenblum. CS142 Lecture Notes - Sessions

Sessions. Mendel Rosenblum. CS142 Lecture Notes - Sessions Sessions Mendel Rosenblum How do we know what user sent request? Would like to authenticate user and have that information available each time we process a request. More generally web apps would like to

More information

Performance Optimization for Informatica Data Services ( Hotfix 3)

Performance Optimization for Informatica Data Services ( Hotfix 3) Performance Optimization for Informatica Data Services (9.5.0-9.6.1 Hotfix 3) 1993-2015 Informatica Corporation. No part of this document may be reproduced or transmitted in any form, by any means (electronic,

More information

C IBM. IBM WebSphere Application Server Network Deployment V8.5.5 and Liberty Profile, System Administration

C IBM. IBM WebSphere Application Server Network Deployment V8.5.5 and Liberty Profile, System Administration IBM C2180-401 IBM WebSphere Application Server Network Deployment V8.5.5 and Liberty Profile, System Administration Download Full Version : http://killexams.com/pass4sure/exam-detail/c2180-401 QUESTION:

More information

Improve Web Application Performance with Zend Platform

Improve Web Application Performance with Zend Platform Improve Web Application Performance with Zend Platform Shahar Evron Zend Sr. PHP Specialist Copyright 2007, Zend Technologies Inc. Agenda Benchmark Setup Comprehensive Performance Multilayered Caching

More information

Full Stack boot camp

Full Stack boot camp Name Full Stack boot camp Duration (Hours) JavaScript Programming 56 Git 8 Front End Development Basics 24 Typescript 8 React Basics 40 E2E Testing 8 Build & Setup 8 Advanced JavaScript 48 NodeJS 24 Building

More information

Recap: Functions as first-class values

Recap: Functions as first-class values Recap: Functions as first-class values Arguments, return values, bindings What are the benefits? Parameterized, similar functions (e.g. Testers) Creating, (Returning) Functions Iterator, Accumul, Reuse

More information

Distributed Systems. Lec 10: Distributed File Systems GFS. Slide acks: Sanjay Ghemawat, Howard Gobioff, and Shun-Tak Leung

Distributed Systems. Lec 10: Distributed File Systems GFS. Slide acks: Sanjay Ghemawat, Howard Gobioff, and Shun-Tak Leung Distributed Systems Lec 10: Distributed File Systems GFS Slide acks: Sanjay Ghemawat, Howard Gobioff, and Shun-Tak Leung 1 Distributed File Systems NFS AFS GFS Some themes in these classes: Workload-oriented

More information

Improved 3G Bridge scalability to support desktop grid executions

Improved 3G Bridge scalability to support desktop grid executions Improved 3G Bridge scalability to support desktop grid executions Zoltán Farkas zfarkas@sztaki.hu MTA SZTAKI LPDS 09/01/2010 09/01/2010 3G Bridge Scalability 2 Outline Introduction The scalability problem

More information

Successful Go program design. Six years on

Successful Go program design. Six years on Successful Go program design Six years on ROBOTS Successful Go program design Six years on My background + My background C++ + My background C++ 2009 + My background C++ Go 2009 + My background C++ Go

More information

Integration Guide. LoginTC

Integration Guide. LoginTC Integration Guide LoginTC Revised: 21 November 2016 About This Guide Guide Type Documented Integration WatchGuard or a Technology Partner has provided documentation demonstrating integration. Guide Details

More information

Developing Microsoft Azure Solutions (MS 20532)

Developing Microsoft Azure Solutions (MS 20532) Developing Microsoft Azure Solutions (MS 20532) COURSE OVERVIEW: This course is intended for students who have experience building ASP.NET and C# applications. Students will also have experience with the

More information

ADVANCED DATABASES CIS 6930 Dr. Markus Schneider. Group 5 Ajantha Ramineni, Sahil Tiwari, Rishabh Jain, Shivang Gupta

ADVANCED DATABASES CIS 6930 Dr. Markus Schneider. Group 5 Ajantha Ramineni, Sahil Tiwari, Rishabh Jain, Shivang Gupta ADVANCED DATABASES CIS 6930 Dr. Markus Schneider Group 5 Ajantha Ramineni, Sahil Tiwari, Rishabh Jain, Shivang Gupta WHAT IS ELASTIC SEARCH? Elastic Search Elasticsearch is a search engine based on Lucene.

More information

RECURSION. Problem Solving with Computers-II 6

RECURSION. Problem Solving with Computers-II 6 RECURSION Problem Solving with Computers-II 6 10 12 40 32 43 47 45 41 Let recursion draw you in. Many problems in Computer Science have a recursive structure Identify the recursive structure in these

More information

Developing Microsoft Azure Solutions: Course Agenda

Developing Microsoft Azure Solutions: Course Agenda Developing Microsoft Azure Solutions: 70-532 Course Agenda Module 1: Overview of the Microsoft Azure Platform Microsoft Azure provides a collection of services that you can use as building blocks for your

More information

III Data Structures. Dynamic sets

III Data Structures. Dynamic sets III Data Structures Elementary Data Structures Hash Tables Binary Search Trees Red-Black Trees Dynamic sets Sets are fundamental to computer science Algorithms may require several different types of operations

More information

What Came First? The Ordering of Events in

What Came First? The Ordering of Events in What Came First? The Ordering of Events in Systems @kavya719 kavya the design of concurrent systems Slack architecture on AWS systems with multiple independent actors. threads in a multithreaded program.

More information

Document Sub Title. Yotpo. Technical Overview 07/18/ Yotpo

Document Sub Title. Yotpo. Technical Overview 07/18/ Yotpo Document Sub Title Yotpo Technical Overview 07/18/2016 2015 Yotpo Contents Introduction... 3 Yotpo Architecture... 4 Yotpo Back Office (or B2B)... 4 Yotpo On-Site Presence... 4 Technologies... 5 Real-Time

More information

Distributing Software in a Massively Parallel Environment

Distributing Software in a Massively Parallel Environment Distributing Software in a Massively Parallel Environment LISA 2014 Dinah McNutt Release Engineer, Google, Inc. November 12, 2014 Problem: Reliably and consistently distributing software in a Laaaaaaaaaaaarge

More information

Contents. Getting Set Up Contents 2

Contents. Getting Set Up Contents 2 Getting Set Up Contents 2 Contents Getting Set Up... 3 Best Practices...3 Installing the JAR File... 3 Configuring Community Manager Reports...4 Configure the Analytics Database...4 Enable the Analytics

More information

70-487: Developing Windows Azure and Web Services

70-487: Developing Windows Azure and Web Services 70-487: Developing Windows Azure and Web Services Candidates for this certification are professional developers that use Visual Studio 2015112017 11 and the Microsoft.NET Core Framework 4.5 to design and

More information

Manual Trigger Sql Server 2008 Inserted Table Examples Insert

Manual Trigger Sql Server 2008 Inserted Table Examples Insert Manual Trigger Sql Server 2008 Inserted Table Examples Insert This tutorial is applicable for all versions of SQL Server i.e. 2005, 2008, 2012, Whenever a row is inserted in the Customers Table, the following

More information

20532D: Developing Microsoft Azure Solutions

20532D: Developing Microsoft Azure Solutions 20532D: Developing Microsoft Azure Solutions Course Details Course Code: Duration: Notes: 20532D 5 days Elements of this syllabus are subject to change. About this course This course is intended for students

More information

Copyright 2016 Pivotal. All rights reserved. Cloud Native Design. Includes 12 Factor Apps

Copyright 2016 Pivotal. All rights reserved. Cloud Native Design. Includes 12 Factor Apps 1 Cloud Native Design Includes 12 Factor Apps Topics 12-Factor Applications Cloud Native Design Guidelines 2 http://12factor.net Outlines architectural principles and patterns for modern apps Focus on

More information

CSCI-1200 Data Structures Fall 2018 Lecture 22 Hash Tables, part 2 & Priority Queues, part 1

CSCI-1200 Data Structures Fall 2018 Lecture 22 Hash Tables, part 2 & Priority Queues, part 1 Review from Lecture 21 CSCI-1200 Data Structures Fall 2018 Lecture 22 Hash Tables, part 2 & Priority Queues, part 1 the single most important data structure known to mankind Hash Tables, Hash Functions,

More information

Cargoh Website - A Social Marketplace

Cargoh Website - A Social Marketplace Cargoh Website - A Social Marketplace www.appnovation.com Cargoh Website - A Social Marketplace Contents 1.0 Project Background P.3 2.0 Project Overview P.4 3.0 Project Challenges P.6 4.0 Project Results

More information

Chapter 1: Distributed Information Systems

Chapter 1: Distributed Information Systems Chapter 1: Distributed Information Systems Contents - Chapter 1 Design of an information system Layers and tiers Bottom up design Top down design Architecture of an information system One tier Two tier

More information

Principal Solutions Architect. Architecting in the Cloud

Principal Solutions Architect. Architecting in the Cloud Matt Tavis Principal Solutions Architect Architecting in the Cloud Cloud Best Practices Whitepaper Prescriptive guidance to Cloud Architects Just Search for Cloud Best Practices to find the link ttp://media.amazonwebservices.co

More information

OpenACC Course. Office Hour #2 Q&A

OpenACC Course. Office Hour #2 Q&A OpenACC Course Office Hour #2 Q&A Q1: How many threads does each GPU core have? A: GPU cores execute arithmetic instructions. Each core can execute one single precision floating point instruction per cycle

More information

Techno Expert Solutions

Techno Expert Solutions Course Content of Microsoft Windows Azzure Developer: Course Outline Module 1: Overview of the Microsoft Azure Platform Microsoft Azure provides a collection of services that you can use as building blocks

More information

1Integrate for ArcGIS Installation Guide. Server Edition

1Integrate for ArcGIS Installation Guide. Server Edition 1Integrate for ArcGIS Installation Guide Server Edition Product version: v 2.1 Document version: v 1.9 Document date: 03/08/2018 Copyright 2018 1Spatial plc and its affiliates. All rights reserved. Other

More information

Open-Xchange App Suite Minor Release v Feature Overview V1.0

Open-Xchange App Suite Minor Release v Feature Overview V1.0 Open-Xchange App Suite Minor Release v7.10.1 Feature Overview V1.0 1 OX App Suite v7.10.1... 4 1.1 Intention of this Document... 4 1.2 Key Benefits of OX App Suite v7.10.1... 4 2 OX Calendar Enhancements

More information

Hidden Gems in JD Edwards Orchestrator and AIS Server

Hidden Gems in JD Edwards Orchestrator and AIS Server Hidden Gems in JD Edwards Orchestrator and AIS Server Darryl Shakespeare Senior Director Product Development Oracle JD Edwards EnterpriseOne November 12-17, 2017 Safe Harbor Statement The following is

More information

A never-ending database migration

A never-ending database migration A never-ending database migration Charles Delort IT-DB November 20, 2017 Table of Contents Years ago, decisions were made A few years later PostgreSQL Foreign Data Wrappers First step of Migration Apiato

More information

Developing Microsoft Azure Solutions (70-532) Syllabus

Developing Microsoft Azure Solutions (70-532) Syllabus Developing Microsoft Azure Solutions (70-532) Syllabus Cloud Computing Introduction What is Cloud Computing Cloud Characteristics Cloud Computing Service Models Deployment Models in Cloud Computing Advantages

More information

RCU and C++ Paul E. McKenney, IBM Distinguished Engineer, Linux Technology Center Member, IBM Academy of Technology CPPCON, September 23, 2016

RCU and C++ Paul E. McKenney, IBM Distinguished Engineer, Linux Technology Center Member, IBM Academy of Technology CPPCON, September 23, 2016 Paul E. McKenney, IBM Distinguished Engineer, Linux Technology Center Member, IBM Academy of Technology CPPCON, September 23, 2016 RCU and C++ What Is RCU, Really? Publishing of new data: rcu_assign_pointer()

More information

Logic, Algorithms and Data Structures ADT:s & Hash tables. By: Jonas Öberg, Lars Pareto

Logic, Algorithms and Data Structures ADT:s & Hash tables. By: Jonas Öberg, Lars Pareto Logic, Algorithms and Data Structures ADT:s & Hash tables M7 By: Jonas Öberg, Lars Pareto Others Queues Priority queues Trees Arrays.. Lots of lists Some example properties of a list: access(l, n) :

More information

Transaction Management: Concurrency Control, part 2

Transaction Management: Concurrency Control, part 2 Transaction Management: Concurrency Control, part 2 CS634 Class 16 Slides based on Database Management Systems 3 rd ed, Ramakrishnan and Gehrke Locking for B+ Trees Naïve solution Ignore tree structure,

More information

Locking for B+ Trees. Transaction Management: Concurrency Control, part 2. Locking for B+ Trees (contd.) Locking vs. Latching

Locking for B+ Trees. Transaction Management: Concurrency Control, part 2. Locking for B+ Trees (contd.) Locking vs. Latching Locking for B+ Trees Transaction Management: Concurrency Control, part 2 Slides based on Database Management Systems 3 rd ed, Ramakrishnan and Gehrke CS634 Class 16 Naïve solution Ignore tree structure,

More information

REVIEW OF COMMONLY USED DATA STRUCTURES IN OS

REVIEW OF COMMONLY USED DATA STRUCTURES IN OS REVIEW OF COMMONLY USED DATA STRUCTURES IN OS NEEDS FOR EFFICIENT DATA STRUCTURE Storage complexity & Computation complexity matter Consider the problem of scheduling tasks according to their priority

More information

understanding

understanding understanding nil @francesc thanks welcome every single one of you agenda what is nil? what is nil in Go? what does nil mean? is nil useful? nil? you misspelled null how I learn words how I learn words

More information

SAM Server Utility User s Guide

SAM Server Utility User s Guide SAM Server Utility User s Guide Updated July 2014 Copyright 2010, 2012, 2014 by Scholastic Inc. All rights reserved. Published by Scholastic Inc. PDF0157 (PDF) SCHOLASTIC, READ 180, SYSTEM 44, SCHOLASTIC

More information

High performance and scalable architectures

High performance and scalable architectures High performance and scalable architectures A practical introduction to CQRS and Axon Framework Allard Buijze allard.buijze@trifork.nl Allard Buijze Software Architect at Trifork Organizers of GOTO & QCON

More information

Utilizing Databases in Grid Engine 6.0

Utilizing Databases in Grid Engine 6.0 Utilizing Databases in Grid Engine 6.0 Joachim Gabler Software Engineer Sun Microsystems http://sun.com/grid Current status flat file spooling binary format for jobs ASCII format for other objects accounting

More information

Hands-On with Mendix 7

Hands-On with Mendix 7 Hands-On with Mendix 7 March 30 2017 Andrej Koelewijn, Bart Luijten, Jan de Vries Mendix 7 Smart Apps - Make your apps intelligent, proactive, and contextual Mendix Connector Kit - Defining integrations

More information

Vlad Vinogradsky

Vlad Vinogradsky Vlad Vinogradsky vladvino@microsoft.com http://twitter.com/vladvino Commercially available cloud platform offering Billing starts on 02/01/2010 A set of cloud computing services Services can be used together

More information

CDMI for Cloud IPC David Slik NetApp, Inc.

CDMI for Cloud IPC David Slik NetApp, Inc. CDMI for Cloud IPC David Slik NetApp, Inc. 2011 Storage Developer Conference. Insert Your Company Name. All Rights Reserved. Session Agenda A Brief Overview of CDMI What is IPC CDMI Queues Common IPC Design

More information

Marathon Documentation

Marathon Documentation Marathon Documentation Release 3.0.0 Top Free Games Feb 07, 2018 Contents 1 Overview 3 1.1 Features.................................................. 3 1.2 Architecture...............................................

More information

Loosely coupled: asynchronous processing, decoupling of tiers/components Fan-out the application tiers to support the workload Use cache for data and content Reduce number of requests if possible Batch

More information

ArcGIS Server Performance and Scalability : Optimizing GIS Services

ArcGIS Server Performance and Scalability : Optimizing GIS Services Esri International User Conference San Diego, CA Technical Workshops July 12, 2011 ArcGIS Server Performance and Scalability : Optimizing GIS Services David Cordes, Eric Miller Poll the Audience: Role

More information

Gustavo Alonso, ETH Zürich. Web services: Concepts, Architectures and Applications - Chapter 1 2

Gustavo Alonso, ETH Zürich. Web services: Concepts, Architectures and Applications - Chapter 1 2 Chapter 1: Distributed Information Systems Gustavo Alonso Computer Science Department Swiss Federal Institute of Technology (ETHZ) alonso@inf.ethz.ch http://www.iks.inf.ethz.ch/ Contents - Chapter 1 Design

More information

Bill Bridge. Oracle Software Architect NVM support for C Applications

Bill Bridge. Oracle Software Architect NVM support for C Applications JANUARY 20, 2015, SAN JOSE, CA Bill Bridge PRESENTATION TITLE GOES HERE Place Speaker Photo Here if Available Oracle Software Architect NVM support for C Applications Overview Oracle has developed a NVM

More information

A new Mono GC. Paolo Molaro October 25, 2006

A new Mono GC. Paolo Molaro October 25, 2006 A new Mono GC Paolo Molaro lupus@novell.com October 25, 2006 Current GC: why Boehm Ported to the major architectures and systems Featurefull Very easy to integrate Handles managed pointers in unmanaged

More information

Administration Guide

Administration Guide Administration Guide Version 2.0 November, 2015 Biscom, Inc. 321 Billerica Rd. Chelmsford, MA 01824 tel 978-250-1800 fax 978-250-4449 CONTENTS 1. Initial Configuration and Settings...1 1.1 Application...

More information