Developing Web Applications with Apache, Mysql®, Memcached

Total Page:16

File Type:pdf, Size:1020Kb

Developing Web Applications with Apache, Mysql®, Memcached est. spine=1.78" Wrox Programmer to ProgrammerTM Wrox Programmer to ProgrammerTM Developing Web Applications Galbraith with Apache, MySQL ®, memcached, and Perl Adding a cache layer to the popular LAMP stack is becoming What you will learn from this book the common solution to significantly reduce the load on back- ● How to install, configure, and work with MySQL particularly with Apache, MySQL Applications Web Developing end databases, and also allows for better web application basic concepts involving data, joins, and indexes as well as memcached, and Perl performance. This new caching component is represented by advanced usage of triggers, stored procedures, user-defined another “m” in LAMMP, which stands for memcached—a high- functions, storage engine usage, and more! performance, distributed memory object caching system that ● provides caching for web applications. The author walks you A Perl refresher on basic concepts as well as how to work through the process of using Perl to develop web applications with data from MySQL using various Perl data types both in terms of the front-end display logic as well as the ● A chapter on object-oriented Perl back-end data retrieval from MySQL and memcached. You ● How to the use Sphinx storage engine for full-text searching also see how to configure the Apache web server to run these as well as Gearman to distribute tasks mod_perl applications. ● How to install and configure Apache 2.2 to work with You’ll discover that MySQL and memcached are where the mod_perl 2.0 data is stored, and Apache is the server that hosts this ● How to use mod_perl handlers to develop web applications, functionality. You’ll also examine each system while you learn including working with Ajax how to install, set up, and administer it. ● A sample search engine application that puts together the The book shows you how to put each of these systems various technologies discussed in the book together so you can start building successful applications. Helpful examples put in practice the information covered Who this book is for throughout the book and a problem-solving chapter offers This book is for developers who want to write applications using real-world problems and the process of how you might go MySQL, memcached, Apache, and Perl, and are interested in about finding a solution to them. improving the development process and efficiency. Developing Wrox Professional guides are planned and written by working programmers to meet the real-world needs of programmers, developers, and IT professionals. Focused and relevant, they address the issues technology professionals face every day. They provide examples, practical solutions, and expert education in new technologies, all designed to help programmers do a better job. Web Applications ® , with Apache, MySQL®, memcached, and Perl www.wrox.com Recommended Database Management ISBN: 978-0-470-41464-4 Computer Book Categories Web Applications Patrick Galbraith $49.99 USA $59.99 CANADA Updates, source code, and Wrox technical support at www.wrox.com Galbraith cag.tex V2 - 06/02/2009 11:44am Page ii Galbraith cag.tex V2 - 06/02/2009 4:43pm Page i Developing Web Applications with Perl, memcached, MySQL® and Apache Foreword ................................................................ xxv Introduction . xxvii Chapter 1: LAMMP, Now with an Extra M . 1 Chapter 2: MySQL. 15 Chapter 3: Advanced MySQL . 85 Chapter 4: Perl Primer. 163 Chapter 5: Object-Oriented Perl. 211 Chapter 6: MySQL and Perl . 245 Chapter 7: Simple Database Application . 285 Chapter 8: memcached . 313 Chapter 9: libmemcached . 359 Chapter 10: Memcached Functions for MySQL . 383 Chapter 11: Apache .. 417 Chapter 12: Contact List Application . 503 Chapter 13: mod_perl . 565 Chapter 14: Using mod_perl Handlers . 601 Chapter 15: More mod_perl . 633 Chapter 16: Perl and Ajax . 707 Chapter 17: Search Engine Application . 739 Appendix A: Installing MySQL . 793 Appendix B: Configuring MySQL . 811 Index....................................................................831 Galbraith cag.tex V2 - 06/02/2009 11:44am Page ii Galbraith ffirs.tex V3 - 06/03/2009 4:22pm Page iii Developing Web Applications with Perl, memcached, MySQL® and Apache Patrick Galbraith Wiley Publishing, Inc. Galbraith ffirs.tex V3 - 06/03/2009 4:22pm Page iv ® Developing Web Applications with Perl, memcached, MySQL and Apache Published by Wiley Publishing, Inc. 10475 Crosspoint Boulevard Indianapolis, IN 46256 www.wiley.com Copyright © 2009 by Wiley Publishing, Inc., Indianapolis, Indiana Published simultaneously in Canada ISBN: 978-0-470-41464-4 Manufactured in the United States of America 10987654321 No part of this publication may be reproduced, stored in a retrieval system or transmitted in any form or by any means, electronic, mechanical, photocopying, recording, scanning or otherwise, except as permitted under Sections 107 or 108 of the 1976 United States Copyright Act, without either the prior written permission of the Publisher, or authorization through payment of the appropriate per-copy fee to the Copyright Clearance Center, 222 Rosewood Drive, Danvers, MA 01923, (978) 750-8400, fax (978) 646-8600. Requests to the Publisher for permission should be addressed to the Permissions Department, John Wiley & Sons, Inc., 111 River Street, Hoboken, NJ 07030, (201) 748-6011, fax (201) 748-6008, or online at http://www.wiley.com/go/permissions. Limit of Liability/Disclaimer of Warranty: The publisher and the author make no representations or warranties with respect to the accuracy or completeness of the contents of this work and specifically disclaim all warranties, including without limitation warranties of fitness for a particular purpose. No warranty may be created or extended by sales or promotional materials. The advice and strategies contained herein may not be suitable for every situation. This work is sold with the understanding that the publisher is not engaged in rendering legal, accounting, or other professional services. If professional assistance is required, the services of a competent professional person should be sought. Neither the publisher nor the author shall be liable for damages arising herefrom. The fact that an organization or Web site is referred to in this work as a citation and/or a potential source of further information does not mean that the author or the publisher endorses the information the organization or Web site may provide or recommendations it may make. Further, readers should be aware that Internet Web sites listed in this work may have changed or disappeared between when this work was written and when it is read. For general information on our other products and services please contact our Customer Care Department within the United States at (877) 762-2974, outside the United States at (317) 572-3993 or fax (317) 572-4002. Library of Congress Control Number: 2009927343 Trademarks: Wiley, the Wiley logo, Wrox, the Wrox logo, Wrox Programmer to Programmer, and related trade dress are trademarks or registered trademarks of John Wiley & Sons, Inc. and/or its affiliates, in the United States and other countries, and may not be used without written permission. MySQL is a registered trademark of MySQL AB. All other trademarks are the property of their respective owners. Wiley Publishing, Inc., is not associated with any product or vendor mentioned in this book. Wiley also publishes its books in a variety of electronic formats. Some content that appears in print may not be available in electronic books. Galbraith ffirs.tex V3 - 06/03/2009 4:22pm Page v To my wonderful wife, Ruth, whom I have known for 27 years and who has stood by me while writing this book, even when I couldn’t give her the time she deserved. Also, to my dear friend Krishna, who gave me inspiration every day. Galbraith fcre.tex V3 - 06/02/2009 11:44am Page vi Credits Acquisitions Editor Vice President and Executive Group Jenny Watson Publisher Richard Swadley Project Editor Maureen Spears Vice President and Executive Publisher Barry Pruett Technical Editor John Bokma Associate Publisher Jim Minatel Production Editor Rebecca Coleman Project Coordinator, Cover Lynsey Stanford Copy Editor Sara E. Wilson Proofreader Corina Copp, Word One Editorial Manager Mary Beth Wakefield Indexer Robert Swanson Production Manager Tim Tate Galbraith fauth.tex V3 - 06/02/2009 11:46am Page vii About the Author Patrick Galbraith lives up in the sticks of southwestern New Hampshire near Mt. Monadnock with his wife, Ruth. Since 1993, he has been using and developing open source software. He has worked on various open source projects, including MySQL, Federated storage engine, Memcached Functions for MySQL, Drizzle, and Slashcode, and is the maintainer of DBD::mysql. He has worked at a number of companies throughout his career, including MySQL AB, Classmates.com, OSDN/Slashdot. He currently works for Lycos. He is also part owner of a wireless broadband company, Radius North, which provides Internet service to underserved rural areas of New Hampshire. His web site, which comes by way of a 5.8GHz Alvarion access unit up in a pine tree, is http://patg.net. About the Technical Editor John Bokma is a self-employed Perl programmer and consultant from the Netherlands. He has been working professionally in software development since 1994, moving his primary focus more and more toward the Perl programming language. John and his wife, Esmeralda, currently live in the state of Veracruz, Mexico, with their daughter Alice. John’s other two children, Jim and Laurinda, live with their mother in New Zealand. For more information or to contact John, visit his web site at http://johnbokma.com/. Galbraith fauth.tex V3 - 06/02/2009 11:46am Page viii Galbraith fack.tex V3 - 06/02/2009 11:46am Page ix Acknowledgments One weekend in 1993, I had the chance to go on a getaway to San Diego. Instead, I opted to stay home and download, onto 26 floppies, Slackware Linux, which I promptly installed onto my Packard Bell 386.
Recommended publications
  • High Performance Mysql Other Microsoft .NET Resources from O’Reilly
    High Performance MySQL Other Microsoft .NET resources from O’Reilly Related titles Managing and Using MySQL PHP Cookbook™ MySQL Cookbook™ Practical PostgreSQL MySQL Pocket Reference Programming PHP MySQL Reference Manual SQL Tuning Learning PHP Web Database Applications PHP 5 Essentials with PHP and MySQL .NET Books dotnet.oreilly.com is a complete catalog of O’Reilly’s books on Resource Center .NET and related technologies, including sample chapters and code examples. ONDotnet.com provides independent coverage of fundamental, interoperable, and emerging Microsoft .NET programming and web services technologies. Conferences O’Reilly Media bring diverse innovators together to nurture the ideas that spark revolutionary industries. We specialize in docu- menting the latest tools and systems, translating the innovator’s knowledge into useful skills for those in the trenches. Visit con- ferences.oreilly.com for our upcoming events. Safari Bookshelf (safari.oreilly.com) is the premier online refer- ence library for programmers and IT professionals. Conduct searches across more than 1,000 books. Subscribers can zero in on answers to time-critical questions in a matter of seconds. Read the books on your Bookshelf from cover to cover or sim- ply flip to the page you need. Try it today for free. SECOND EDITION High Performance MySQL Baron Schwartz, Peter Zaitsev, Vadim Tkachenko, Jeremy D. Zawodny, Arjen Lentz, and Derek J. Balling Beijing • Cambridge • Farnham • Köln • Sebastopol • Taipei • Tokyo High Performance MySQL, Second Edition by Baron Schwartz, Peter Zaitsev, Vadim Tkachenko, Jeremy D. Zawodny, Arjen Lentz, and Derek J. Balling Copyright © 2008 O’Reilly Media, Inc. All rights reserved. Printed in the United States of America.
    [Show full text]
  • Hidden Gears of Your Application
    Hidden gears of your application Sergej Kurakin Problem ● Need for quick response ● Need for many updates ● Need for different jobs done ● Need for task to be done as different user on server side ● Near real-time job start ● Load distribution Job Queue ● You put job to queue ● Worker takes the job and makes it done Job Queue using Crons ● Many different implementations ● Perfect for small scale ● Available on many systems/servers ● Crons are limited to running once per minute ● Harder to distribute load Gearman Job Server ● Job Queue ● http://gearman.org/ ● C/C++ ● Multi-language ● Scalable and Fault Tolerant ● Huge message size (up to 4 gig) Gearman Stack Gearman Job Types Normal Job Background Job ● Run Job ● Run Job in ● Return Result Background ● No Return of Result Gearman Parallel Tasks Gearman Supported Languages ● C ● Java ● Perl ● C#/.NET ● NodeJS ● Ruby ● PHP ● Go ● Python ● Lisp Job Priority ● Low ● Normal ● High Gearman Worker Example <?php // Reverse Worker Code $worker = new GearmanWorker(); $worker->addServer(); $worker->addFunction("reverse", function ($job) { return strrev($job->workload()); }); while ($worker->work()); Gearman Client Example <?php // Reverse Client Code $client = new GearmanClient(); $client->addServer(); print $client->do("reverse", "Hello World!"); Gearman Client Example <?php // Reverse Client Code $client = new GearmanClient(); $client->addServer(); $client->doBackground("reverse", "Hello World!"); Running Worker in Background ● CLI ● screen / tmux ● supervisord - http://supervisord.org/ ● daemontools
    [Show full text]
  • VSI's Open Source Strategy
    VSI's Open Source Strategy Plans and schemes for Open Source so9ware on OpenVMS Bre% Cameron / Camiel Vanderhoeven April 2016 AGENDA • Programming languages • Cloud • Integraon technologies • UNIX compability • Databases • Analy;cs • Web • Add-ons • Libraries/u;li;es • Other consideraons • SoDware development • Summary/conclusions tools • Quesons Programming languages • Scrip;ng languages – Lua – Perl (probably in reasonable shape) – Tcl – Python – Ruby – PHP – JavaScript (Node.js and friends) – Also need to consider tools and packages commonly used with these languages • Interpreted languages – Scala (JVM) – Clojure (JVM) – Erlang (poten;ally a good fit with OpenVMS; can get good support from ESL) – All the above are seeing increased adop;on 3 Programming languages • Compiled languages – Go (seeing rapid adop;on) – Rust (relavely new) – Apple Swi • Prerequisites (not all are required in all cases) – LLVM backend – Tweaks to OpenVMS C and C++ compilers – Support for latest language standards (C++) – Support for some GNU C/C++ extensions – Updates to OpenVMS C RTL and threads library 4 Programming languages 1. JavaScript 2. Java 3. PHP 4. Python 5. C# 6. C++ 7. Ruby 8. CSS 9. C 10. Objective-C 11. Perl 12. Shell 13. R 14. Scala 15. Go 16. Haskell 17. Matlab 18. Swift 19. Clojure 20. Groovy 21. Visual Basic 5 See h%p://redmonk.com/sogrady/2015/07/01/language-rankings-6-15/ Programming languages Growing programming languages, June 2015 Steve O’Grady published another edi;on of his great popularity study on programming languages: RedMonk Programming Language Rankings: June 2015. As usual, it is a very valuable piece. There are many take-away from this research.
    [Show full text]
  • Technical Update & Roadmap
    18/05/2018 VMS Software Inc. (VSI) Technical Update & Roadmap May 2018 Brett Cameron Agenda ▸ What we've done to date ▸ Product roadmap ▸ TCP/IP update ▸ Upcoming new products ▸ Support roadmap ▸ Storage ▸ x86 update, roadmap, and licensing ▸ x86 servers ▸ ISV programme ▸ Other stuff 1 18/05/2018 WhatDivider we’ve with done to date OpenVMS releases to date 3 OpenVMS I64 releases: Plus … Two OpenVMS Alpha Japanese version • V8.4-1H1 – Bolton releases: • DECforms V4.2 • – June 2015 V8.4-2L1 – February • DCPS V2.8 2017 • V8.4-2 - Maynard • FMS V2.6 • Standard OpenVMS – March 2016 • DECwindows Motif V1.7E release (Hudson) • V8.4-2L1 – Hudson • V8.4-2L2 - April 2017 – August 2016 • Performance build, EV6/EV7 (Felton) 2 18/05/2018 Products introduced from 2015 to date Technical achievements to date 65 Layered Product Releases 12 Open Source Releases OpenVMS Releases 4 VSI OpenVMS Statistics 515 VSI Defect Repairs 179 New Features Since V7.3-2 0 100 200 300 400 500 600 3 18/05/2018 Defect repairs 515 Total Defect Repairs 343 Source - Internal BZ VSI - Defect Repairs 118 Source - External BZ 54 Source - Quix 0 100 200 300 400 500 600 Testing hours Test Hours Per VSI OpenVMS Version TKSBRY IA64 V8.4-2L1 Test Hours V8.4-2 V8.4-1H1 0 20000 40000 60000 80000 100000 120000 140000 4 18/05/2018 ProductDivider roadmap with OpenVMS Integrity operating environment Released Planned BOE Components: • NOTARY V1.0 BOE Components: • • V8.4-2L1 operating system OpenSSL V1.02n • CSWS additional modules • • ANT V1.7-1B Perl V5.20-2A • PHP additional modules •
    [Show full text]
  • List of TCP and UDP Port Numbers from Wikipedia, the Free Encyclopedia
    List of TCP and UDP port numbers From Wikipedia, the free encyclopedia This is a list of Internet socket port numbers used by protocols of the transport layer of the Internet Protocol Suite for the establishment of host-to-host connectivity. Originally, port numbers were used by the Network Control Program (NCP) in the ARPANET for which two ports were required for half- duplex transmission. Later, the Transmission Control Protocol (TCP) and the User Datagram Protocol (UDP) needed only one port for full- duplex, bidirectional traffic. The even-numbered ports were not used, and this resulted in some even numbers in the well-known port number /etc/services, a service name range being unassigned. The Stream Control Transmission Protocol database file on Unix-like operating (SCTP) and the Datagram Congestion Control Protocol (DCCP) also systems.[1][2][3][4] use port numbers. They usually use port numbers that match the services of the corresponding TCP or UDP implementation, if they exist. The Internet Assigned Numbers Authority (IANA) is responsible for maintaining the official assignments of port numbers for specific uses.[5] However, many unofficial uses of both well-known and registered port numbers occur in practice. Contents 1 Table legend 2 Well-known ports 3 Registered ports 4 Dynamic, private or ephemeral ports 5 See also 6 References 7 External links Table legend Official: Port is registered with IANA for the application.[5] Unofficial: Port is not registered with IANA for the application. Multiple use: Multiple applications are known to use this port. Well-known ports The port numbers in the range from 0 to 1023 are the well-known ports or system ports.[6] They are used by system processes that provide widely used types of network services.
    [Show full text]
  • Livejournal: Behind the Scenes Scaling Storytime
    LiveJournal: Behind The Scenes Scaling Storytime April 2007 Brad Fitzpatrick [email protected] danga.com / livejournal.com / sixapart.com This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/1.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. http://danga.com/words/ 1 This Talk’s Gracious Sponsor Buy your servers from them Much love They didn’t even ask for me to put this slide in. :) http://danga.com/words/ 2 The plan... Refer to previous presentations for more details... http://danga.com/words/ Questions anytime! Yell. Interrupt. Part N: − show where talk will end up Part I: − What is LiveJournal? Quick history. − LJ’s scaling history Part II: − explain all our software, − explain all the moving parts http://danga.com/words/ 3 net. LiveJournal Backend: Today (Roughly.) BIG-IP perlbal (httpd/proxy) Global Database bigip1 mod_perl bigip2 proxy1 web1 master_a master_b proxy2 web2 proxy3 web3 Memcached slave1 slave2 ... slave5 djabberd proxy4 web4 mc1 djabberd proxy5 ... mc2 djabberd User DB Cluster 1 webN mc3 uc1a uc1b mc4 User DB Cluster 2 ... uc2a uc2b gearmand Mogile Storage Nodes gearmand1 mcN User DB Cluster 3 sto1 sto2 Mogile Trackers gearmandN uc3a uc3b ... sto8 tracker1 tracker3 User DB Cluster N ucNa ucNb MogileFS Database “workers” gearwrkN Job Queues (xN) mog_a mog_b theschwkN jqNa jqNb http:/slave1/danga.comslaveN/words/ 4 LiveJournal Overview college hobby project, Apr 1999 4-in-1: − blogging − forums − social-networking (“friends”) − aggregator: “friends page” + RSS/Atom 10M+ accounts Open Source! − server, − infrastructure, − original clients, − ..
    [Show full text]
  • Data Management Organization Charter
    Large Synoptic Survey Telescope (LSST) Database Design Jacek Becla, Daniel Wang, Serge Monkewitz, K-T Lim, Douglas Smith, Bill Chickering LDM-135 08/02/2013 LSST Database Design LDM-135 08/02/13 Change Record Version Date Description Revision Author 1.0 6/15/2009 Initial version Jacek Becla 2.0 7/12/2011 Most sections rewritten, added scalability test Jacek Becla section 2.1 8/12/2011 Refreshed future-plans and schedule of testing Jacek Becla, sections, added section about fault tolerance Daniel Wang 3.0 8/2/2013 Synchronized with latest changes to the Jacek Becla, requirements (LSE-163). Rewrote most of the Daniel Wang, “Implementation” chapter. Documented new Serge Monkewitz, tests, refreshed all other chapters. Kian-Tat Lim, Douglas Smith, Bill Chickering 2 LSST Database Design LDM-135 08/02/13 Table of Contents 1. Executive Summary.....................................................................................................................8 2. Introduction..................................................................................................................................9 3. Baseline Architecture.................................................................................................................10 3.1 Alert Production and Up-to-date Catalog..........................................................................10 3.2 Data Release Production....................................................................................................13 3.3 User Query Access.............................................................................................................13
    [Show full text]
  • Laith Shadeed [email protected] +31627249393 L3.Ai
    Laith Shadeed [email protected] +31627249393 l3.ai EXPERIENCE Senior Full-Stack Software Engineer AIMMS, Haarlem 2017 - Current Decrease page load 50th percentile from 20s to below 4s (Javascript, Node.js). Reduce GitLab end-2-end test pipeline execution time from 46 min to 3 min (Docker, Bash). Maintaining back-end REST APIs & TCP proxy in Node.js Stack: AWS, Docker, GitLab, Javascript, Node.js, Webpack and jQuery. Lead Software Engineer SuperSaaS, Amsterdam 2016 - 2017 Add credit card payments. 60% of new subscriptions start using it in the 1st week (Ruby, Javascript). Add automated bare-metal server provisioning, monitoring, real-time logging and alerting (Bash, Perl). Stack: Passenger, Capistrano, Apache httpd, MySQL, Monit, Munin, Nagios and Ubuntu. Back-end Software Engineer Booking.com, Amsterdam 2014 - 2016 Launch Apple Map integration with Booking.com Hotels for the first time for Mac users (Perl). Improve response time of Maps XHR requests by 50% (Perl, Javascript). On the hiring team for final face-face interviews. Stack: uWSGI, Ngnix, MySQL, Puppet, Redis, Hadoop, Graphite and Debian. Senior Back-end Software Engineer One.com, Dubai 2012 - 2014 In-house Photo Processing, Video Transcoding, Job Queuing serving +200,000 web domains (PHP, Node.js). Lead the design of v2 & v3 of the photo application (PHP, Javascript). Stack: Node.js, PostgreSQL, Apache httpd, Varnish, Gearman, Redis, Puppet and Debian. Back-end Software Engineer Yahoo!, Amman & Bangalore 2009 - 2012 Launch Y! News Mobile for Middle East market serving 17 countries (PHP, Javascript). Part of Y! Mail team launching the product for +70 million Arabic users (PHP, Javascript). Stack: Apache httpd, MySQL, Memcache, Apache Traffic Server and Redhat.
    [Show full text]
  • 1 Background and Introduction 2 General Comment On
    M.5529 Oracle/Sun Merger Monty Program Ab's observations and corrections on Prof. Eben Moglen's submission to the Commission regarding GPL, forking and MySQL business models. 1 Background and introduction 1.1 A lawyer well-known in and well-respected by the free software community, former legal counsel to the Free Software Foundation, and former advisor to MySQL Ab, Professor Eben Moglen on December 4 published an opinion paper dated and submitted to the European Commission on November 19.1 1.2 Monty Program Ab was founded in 2009 by the creator of MySQL and its dual license business model, Michael "Monty" Widenius, and employs some former employees of MySQL Ab and Sun Microsystems. Like our previous submissions in this case, we wish to provide here our unique insight into MySQL, be it from a technical, business, or sometimes even licensing perspective. 1.3 In the following paragraphs we will correct (only) the main factual errors of Prof. Moglen's paper. Before commencing it is important to stress our highest regard for the valuable, life-long and groundbreaking work of Prof. Moglen for the FSF, MySQL Ab, and software freedom in general. We would like to remind the reader that in proceedings like this, each party is always advised and supported by lawyers, and a lawyer's duty is to argue that party's case as well as possible. Hence, with our pointing out the errors in Prof. Moglen's paper, it is not our intention to imply to any reader anything about the person of Prof. Moglen himself and we strongly advice the reader to read the following with a similar attitude.
    [Show full text]
  • Ask Bjørn Hansen Develooper LLC [email protected]
    If this text is too small to read, move closer! Real World Web Scalability Slides at http://develooper.com/talks/ Ask Bjørn Hansen Develooper LLC [email protected] r8 Hello. • I’m Ask Bjørn Hansen • Tutorial in a box 59 minutes! • 53* brilliant° tips to make your website keep working past X requests/transactions per T time • Requiring minimal extra work! (or money) • Concepts applicable to ~all languages and platforms! * Estimate, your mileage may vary ° Well, a lot of them are pretty good Construction Ahead! • Conflicting advice ahead • Not everything here is applicable to everything • Ways to “think scalable” rather than end- all-be-all solutions Questions ... • Did anyone see this talk at OSCON or the MySQL UC before? • ... are using Perl? PHP? Python? Java? Ruby? • ... Oracle? • The first, last and only lesson: • Think Horizontal! • Everything in your architecture, not just the front end web servers • Micro optimizations and other implementation details –– Bzzzzt! Boring! (blah blah blah, we’ll get to the cool stuff in a moment!) Benchmarking techniques • Scalability isn't the same as processing time • Not “how fast” but “how many” • Test “force”, not speed. Think amps, not voltage • Test scalability, not just performance • Use a realistic load • Test with "slow clients" Vertical scaling • “Get a bigger server” • “Use faster CPUs” • Can only help so much (with bad scale/$ value) • A server twice as fast is more than twice as expensive • Super computers are horizontally scaled! Horizontal scaling • “Just add another box” (or another thousand or ...) • Good to great ... • Implementation, scale your system a few times • Architecture, scale dozens or hundreds of times • Get the big picture right first, do micro optimizations later Scalable Application Servers Don’t paint yourself into a corner from the start Run Many of Them • For your application..
    [Show full text]
  • Infrastructure and Performance
    Infrastructure and Performance An Islandoracon Workshop Instructors: Gavin Morris & Luke Taylor Instructor: Luke Taylor DevOps Team Lead discoverygarden inc. 155 Queen St. Suite 101 Charlottetown, PE C1A 4B4 discoverygarden.ca [email protected] Instructors - Gavin Morris ● Team Lead & Dev Ops at Born Digital ○ http://born-digital.com/ ● Convener of the Islandora DevOps Interest Group ○ https://github.com/islandora-interest-groups/Islandora- DevOps-Interest-Group ● Led the Islandora DevOps Panel: Building Islandora at the inaugural Islandora Conference (Islandoracon) on Prince Edward Island, Canada ● Presented Automating Islandora Upgrations, Maintenance and Deploys at the Islandora Camp in Hartford, CT Overview ● Intro to the stack ● Security ○ Build Types ○ Split the stack ● ○ Operating Systems Best Practices ○ Packages ○ Services / Software ● The future of the stack ○ CLAW ● Provisioning ○ ISLE ○ Deploy & Config management tools ○ Pipeline ● Q&A ● Performance ● Resources ● Scaling Intro to the Stack - What is Islandora? Source: http://islandora.mnpals.net/pals/islandora/object/PALSrepository%3A412/datastream/OBJ/download/2016-08_Detailed_Islandora_Introduction.pdf Intro to the Stack - Build Types ALL All in One 2-3 servers 5-7 servers Intro to the Stack - Build Types: All in One Recommended Minimum ● 4-6 cores ● 16GB - 32GB RAM ● 100-200GB for OS, Temp files etc ● Volume large enough for repository data ● Additional space could be required for staging content Intro to the Stack - Build Types: 2-3 servers Web & Database Server (Minimum Requirements) ● 1-2 cores ● 4 - 16 GB RAM (*depends on platform type e.g. staging, dev) ● 150-250GB for OS, Temp files etc ● Additional space could be required for staging content Fedora Repository Server (Minimum Requirements) ● 2-4 cores ● 8 - 32 GB RAM (*depends on collection size) ● 150-250GB for OS, Temp files etc ● Additional space / volume for repository data e.g.
    [Show full text]
  • What Powers Instagram: Hundreds of Instances, Dozens of Technologies Instagram Engineering
    What Powers Instagram: Hundreds of Instances, Dozens of Technologies ­ Instagram Engineering instagram­engineering.tumblr.com One of the questions we always get asked at meet­ups and conversations with other engineers is, “what’s your stack?” We thought it would be fun to give a sense of all the systems that power Instagram, at a high­level; you can look forward to more in­depth descriptions of some of these systems in the future. This is how our system has evolved in the just­over­1­year that we’ve been live, and while there are parts we’re always re­working, this is a glimpse of how a startup with a small engineering team can scale to our 14 million+ users in a little over a year. Our core principles when choosing a system are: Keep it very simple Don’t re­invent the wheel Go with proven and solid technologies when you can We’ll go from top to bottom: OS / Hosting We run Ubuntu Linux 11.04 (“Natty Narwhal”) on Amazon EC2. We’ve found previous versions of Ubuntu had all sorts of unpredictable freezing episodes on EC2 under high traffic, but Natty has been solid. We’ve only got 3 engineers, and our needs are still evolving, so self­hosting isn’t an option we’ve explored too deeply yet, though is something we may revisit in the future given the unparalleled growth in usage. Load Balancing Every request to Instagram servers goes through load balancing machines; we used to run 2 nginx machines and DNS Round­Robin between them.
    [Show full text]