How we use Go to build APIs PubNative best practices and patterns. Kostiantyn Stepaniuk PubNative GmbH
|
|
- Britton Johnston
- 5 years ago
- Views:
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 1 Who ( Web Mobile ) penetration tester Code reviewer Programmer Roberto Clapis @empijei 2 Go Google s language Born in 2007 (quite
More informationGo 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 informationand 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 informationGo 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 informationVitess. 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 informationSantiago 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 informationCatalyst. 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 informationGo 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 informationDistributed 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 informationGO 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 informationJune 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 informationTypical 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 informationFrom 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 informationLessons 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 informationThe 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 informationLessons 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 informationGo 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 informationCourse 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 informationChapter 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 informationCSE 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 informationConcurrency 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 informationGo 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 informationVulkan: 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 informationApp 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 informationPrint 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 informationAzure 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 information10/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 informationUsing 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 informationIs 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 informationProxySQL'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 informationCache 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 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 informationChapter 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 informationRsyslog: 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 informationCharity
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 informationlibvnf: 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 informationBeBanjo 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 informationRFC 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 informationHere, 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 informationTransactional 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 informationCourse 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 informationA 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 informationTrafficDB: 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 informationHuge 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 informationDeveloping 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 informationLdap 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 informationMICHIEL 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 informationSessions. 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 informationPerformance 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 informationC 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 informationImprove 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 informationFull 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 informationRecap: 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 informationDistributed 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 informationImproved 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 informationSuccessful 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 informationIntegration 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 informationDeveloping 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 informationADVANCED 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 informationRECURSION. 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 informationDeveloping 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 informationIII 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 informationWhat 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 informationDocument 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 informationDistributing 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 informationContents. 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 information70-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 informationManual 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 information20532D: 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 informationCopyright 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 informationCSCI-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 informationCargoh 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 informationChapter 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 informationPrincipal 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 informationOpenACC 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 informationTechno 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 information1Integrate 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 informationOpen-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 informationHidden 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 informationA 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 informationDeveloping 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 informationRCU 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 informationLogic, 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 informationTransaction 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 informationLocking 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 informationREVIEW 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 informationunderstanding
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 informationSAM 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 informationHigh 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 informationUtilizing 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 informationHands-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 informationVlad 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 informationCDMI 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 informationMarathon 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 informationLoosely 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 informationArcGIS 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 informationGustavo 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 informationBill 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 informationA 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 informationAdministration 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