This talk provides an overview of the large platform architecture used at State51 to deliver independent music and media content. It discusses using technologies like Varnish, Nginx, MogileFS, and Memcached to serve content efficiently from cheap hardware. It also describes using a job-based system with RabbitMQ to process workflows asynchronously instead of within web requests. The talk emphasizes designing for reliability through redundancy, monitoring with Splunk, and avoiding mutable states and relational database issues.
Josh Berkus
You've heard that PostgreSQL is the highest-performance transactional open source database, but you're not seeing it on YOUR server. In fact, your PostgreSQL application is kind of poky. What should you do? While doing advanced performance engineering for really high-end systems takes years to learn, you can learn the basics to solve performance issues for 80% of PostgreSQL installations in less than an hour. In this session, you will learn: -- The parts of database application performance -- The performance setup procedure -- Basic troubleshooting tools -- The 13 postgresql.conf settings you need to know -- Where to look for more information.
Empowering developers to deploy their own data storesTomas Doran
Ā
Empowering developers to deploy their own data stores using Terrafom, Puppet and rage. A talk about automating server building and configuration for Elasticsearch clusters, using Hashicorp and puppet labs tool. Presented at Config Management Camp 2016 in Ghent
Josh Berkus
You've heard that PostgreSQL is the highest-performance transactional open source database, but you're not seeing it on YOUR server. In fact, your PostgreSQL application is kind of poky. What should you do? While doing advanced performance engineering for really high-end systems takes years to learn, you can learn the basics to solve performance issues for 80% of PostgreSQL installations in less than an hour. In this session, you will learn: -- The parts of database application performance -- The performance setup procedure -- Basic troubleshooting tools -- The 13 postgresql.conf settings you need to know -- Where to look for more information.
Empowering developers to deploy their own data storesTomas Doran
Ā
Empowering developers to deploy their own data stores using Terrafom, Puppet and rage. A talk about automating server building and configuration for Elasticsearch clusters, using Hashicorp and puppet labs tool. Presented at Config Management Camp 2016 in Ghent
A quick overview of the seed for Meandre 2.0 series. It covers the main motivations moving forward and the disruptive changes introduced via the use of Scala and MongoDB
WebAssembly is great as a target for a low-level code, but in order to do something useful, it needs to interact with the outer world. On the Web, this means performing all sorts of I/O through Web APIs, and here comes the challenge: they are designed to be asynchronous, but WebAssembly is not.
Let's take a look at this problem and see how it can be fixed, as well as at some examples we can build by combining power of both modern Web APIs and a fast native compilation target.
This is a talk I gave about Offline First development at jsDay Verona on May 14th, 2015 and TopConf Tallinn on November 18th, 2015 .
It covers why and when we should prepare our web apps for the offline state, which browser capabilities help us to accomplish the job and how we can detect the offline state for a better UI.
Dockersh and a brief intro to the docker internalsTomas Doran
Ā
Dockersh is a new tool to give a login shell into per-user Docker containers. (https://github.com/Yelp/dockersh) This talk will be an illustrated tour of what dockersh does, and why it might be useful to you. During this journey weāll dive into the Go programming language, + libcontainer (the technologies Docker is built on) in addition to the facilities Docker uses in the kernel (Namespaces, Cgroups and Capabilities), how these work, and how normal mortals can (ab)use them for fun and profit
Sensu and Sensibility - Puppetconf 2014Tomas Doran
Ā
As the Yelp infrastructure and engineering team grew, so did the pain of managing Nagios. Problems like splitting alerting across multiple teams, providing high availability and managing nagios systems in multiple environments had become pressing. As we grew towards a service oriented architecture and pushed some services out into the cloud, we rapidly needed more automated monitoring configuration.
An evolutionary solution wasnāt going to solve all of our problems, we needed to revolutionize our monitoring. Sensu is built from the ground up to solve many of our issues and be easy to extend.
This talk covers our puppet āmonitoring_checkā API (that sets up monitoring for our services within puppet), how and why we deploy Sensu and our custom handlers and escalations, along with how we provide automatic āself serviceā monitoring for dynamic services and how we deal with the challenges posed by the more ephemeral nature of cloud architectures.
More Related Content
Similar to Large platform architecture in (mostly) perl
A quick overview of the seed for Meandre 2.0 series. It covers the main motivations moving forward and the disruptive changes introduced via the use of Scala and MongoDB
WebAssembly is great as a target for a low-level code, but in order to do something useful, it needs to interact with the outer world. On the Web, this means performing all sorts of I/O through Web APIs, and here comes the challenge: they are designed to be asynchronous, but WebAssembly is not.
Let's take a look at this problem and see how it can be fixed, as well as at some examples we can build by combining power of both modern Web APIs and a fast native compilation target.
This is a talk I gave about Offline First development at jsDay Verona on May 14th, 2015 and TopConf Tallinn on November 18th, 2015 .
It covers why and when we should prepare our web apps for the offline state, which browser capabilities help us to accomplish the job and how we can detect the offline state for a better UI.
Dockersh and a brief intro to the docker internalsTomas Doran
Ā
Dockersh is a new tool to give a login shell into per-user Docker containers. (https://github.com/Yelp/dockersh) This talk will be an illustrated tour of what dockersh does, and why it might be useful to you. During this journey weāll dive into the Go programming language, + libcontainer (the technologies Docker is built on) in addition to the facilities Docker uses in the kernel (Namespaces, Cgroups and Capabilities), how these work, and how normal mortals can (ab)use them for fun and profit
Sensu and Sensibility - Puppetconf 2014Tomas Doran
Ā
As the Yelp infrastructure and engineering team grew, so did the pain of managing Nagios. Problems like splitting alerting across multiple teams, providing high availability and managing nagios systems in multiple environments had become pressing. As we grew towards a service oriented architecture and pushed some services out into the cloud, we rapidly needed more automated monitoring configuration.
An evolutionary solution wasnāt going to solve all of our problems, we needed to revolutionize our monitoring. Sensu is built from the ground up to solve many of our issues and be easy to extend.
This talk covers our puppet āmonitoring_checkā API (that sets up monitoring for our services within puppet), how and why we deploy Sensu and our custom handlers and escalations, along with how we provide automatic āself serviceā monitoring for dynamic services and how we deal with the challenges posed by the more ephemeral nature of cloud architectures.
Building a smarter application stack - service discovery and wiring for DockerTomas Doran
Ā
There are many advantages to a container based, microservices architecture - however, as always, there is no silver bullet. Any serious deployment will involve multiple host machines, and will have a pressing need to migrate containers between hosts at some point. In such a dynamic world hard coding IP addresses, or even host names is not a viable solution.
This talk will take a journey through how Yelp has solved the discovery problems using Airbnbās SmartStack to dynamically discover service dependencies, and how this is helping unify our architecture, from traditional metal to EC2 āimmutableā SOA images, to Docker containers.
Chasing AMI - Building Amazon machine images with Puppet, Packer and JenkinsTomas Doran
Ā
Using puppet when configuring EC2 machines seems a natural fit. However bringing up new machines from a community image with puppet is not trivial and can be slow, and so not useful for auto-scaling.
The cloud also offers a solution to ongoing server maintenance, allowing you to launch fresh instances whenever you upgrade your applications (Immutable or Phoenix servers). However to predictably succeed, you need to freeze the puppet code alongside the application version for deployment.
The solution to these issues is generating custom machine images (AMIs) with your software inlined. This talk will cover Yelp's use of a Packer, Jenkins and Puppet for generating AMIs. This will include how we deal with issues like bootstrapping, getting canonical information about a machine's environment and cluster state at launch time, as well as supporting immutable/phoenix servers in combination with more traditional long lived servers inside our hybrid cloud infrastructure.
My talk from the Bay area puppetcamp about deploying puppet code to a global network of puppet masters as quickly as possible.
Covers the design and implementation of the TIM Group (and now Yelp) puppetupdate mcollective agent: https://github.com/Yelp/puppetupdate/
Talk from Puppet Camp Munich 2013 about how to lay out classes and defines in puppet code, and how to use hiera data.
Covers puppet 2.7 => 3.3 and how to write sanely forwards compatible code between them.
My talk from the pupet devops conference Berlin 2014 (http://code-your-config.com/). A low level tour of some terrible terrible puppet code, with advice on how to do it better (including showing off the awesome new each() construct you get in puppet 3.2)
Messaging, interoperability and log aggregation - a new frameworkTomas Doran
Ā
In this talk, I will talk about why log files are horrible, logging log lines, and more structured performance metrics from large scale production applications as well as building reliable, scaleable and flexible large scale software systems in multiple languages.
Why (almost) all log formats are horrible will be explained, and why JSON is a good solution for logging will be discussed, along with a number of message queuing, middleware and network transport technologies, including STOMP, AMQP and ZeroMQ.
The Message::Passing framework will be introduced, along with the logstash.net project which the perl code is interoperable with. These are pluggable frameworks in ruby/java/jruby and perl with pre-written sets of inputs, filters and outputs for many many different systems, message formats and transports.
They were initially designed to be aggregators and filters of data for logging. However they are flexible enough to be used as part of your messaging middleware, or even as a replacement for centralised message queuing systems.
You can have your cake and eat it too - an architecture which is flexible, extensible, scaleable and distributed. Build discrete, loosely coupled components which just pass messages to each other easily.
Integrate and interoperate with your existing code and code bases easily, consume from or publish to any existing message queue, logging or performance metrics system you have installed.
Simple examples using common input and output classes will be demonstrated using the framework, as will easily adding your own custom filters. A number of common messaging middleware patterns will be shown to be trivial to implement.
Some higher level use-cases will also be explored, demonstrating log indexing in ElasticSearch and how to build a responsive platform API using webhooks.
Interoperability is also an important goal for messaging middleware. The logstash.net project will be highlighted and we'll discuss crossing the single language barrier, allowing us to have full integration between java, ruby and perl components, and to easily write bindings into libraries we want to reuse in any of those languages.
Let's dive deeper into the world of ODC! Ricardo Alves (OutSystems) will join us to tell all about the new Data Fabric. After that, Sezen de Bruijn (OutSystems) will get into the details on how to best design a sturdy architecture within ODC.
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Jeffrey Haguewood
Ā
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on the notifications, alerts, and approval requests using Slack for Bonterra Impact Management. The solutions covered in this webinar can also be deployed for Microsoft Teams.
Interested in deploying notification automations for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
Ā
Keynote at DIGIT West Expo, Glasgow on 29 May 2024.
Cheryl Hung, ochery.com
Sr Director, Infrastructure Ecosystem, Arm.
The key trends across hardware, cloud and open-source; exploring how these areas are likely to mature and develop over the short and long-term, and then considering how organisations can position themselves to adapt and thrive.
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
Ā
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
Ā
In this insightful webinar, Inflectra explores how artificial intelligence (AI) is transforming software development and testing. Discover how AI-powered tools are revolutionizing every stage of the software development lifecycle (SDLC), from design and prototyping to testing, deployment, and monitoring.
Learn about:
ā¢ The Future of Testing: How AI is shifting testing towards verification, analysis, and higher-level skills, while reducing repetitive tasks.
ā¢ Test Automation: How AI-powered test case generation, optimization, and self-healing tests are making testing more efficient and effective.
ā¢ Visual Testing: Explore the emerging capabilities of AI in visual testing and how it's set to revolutionize UI verification.
ā¢ Inflectra's AI Solutions: See demonstrations of Inflectra's cutting-edge AI tools like the ChatGPT plugin and Azure Open AI platform, designed to streamline your testing process.
Whether you're a developer, tester, or QA professional, this webinar will give you valuable insights into how AI is shaping the future of software delivery.
PHP Frameworks: I want to break free (IPC Berlin 2024)Ralf Eggert
Ā
In this presentation, we examine the challenges and limitations of relying too heavily on PHP frameworks in web development. We discuss the history of PHP and its frameworks to understand how this dependence has evolved. The focus will be on providing concrete tips and strategies to reduce reliance on these frameworks, based on real-world examples and practical considerations. The goal is to equip developers with the skills and knowledge to create more flexible and future-proof web applications. We'll explore the importance of maintaining autonomy in a rapidly changing tech landscape and how to make informed decisions in PHP development.
This talk is aimed at encouraging a more independent approach to using PHP frameworks, moving towards a more flexible and future-proof approach to PHP development.
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
Ā
Are you looking to streamline your workflows and boost your projectsā efficiency? Do you find yourself searching for ways to add flexibility and control over your FME workflows? If so, youāre in the right place.
Join us for an insightful dive into the world of FME parameters, a critical element in optimizing workflow efficiency. This webinar marks the beginning of our three-part āEssentials of Automationā series. This first webinar is designed to equip you with the knowledge and skills to utilize parameters effectively: enhancing the flexibility, maintainability, and user control of your FME projects.
Hereās what youāll gain:
- Essentials of FME Parameters: Understand the pivotal role of parameters, including Reader/Writer, Transformer, User, and FME Flow categories. Discover how they are the key to unlocking automation and optimization within your workflows.
- Practical Applications in FME Form: Delve into key user parameter types including choice, connections, and file URLs. Allow users to control how a workflow runs, making your workflows more reusable. Learn to import values and deliver the best user experience for your workflows while enhancing accuracy.
- Optimization Strategies in FME Flow: Explore the creation and strategic deployment of parameters in FME Flow, including the use of deployment and geometry parameters, to maximize workflow efficiency.
- Pro Tips for Success: Gain insights on parameterizing connections and leveraging new features like Conditional Visibility for clarity and simplicity.
Weāll wrap up with a glimpse into future webinars, followed by a Q&A session to address your specific questions surrounding this topic.
Donāt miss this opportunity to elevate your FME expertise and drive your projects to new heights of efficiency.
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
Ā
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties ā USA
Expansion of bot farms ā how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks ā Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
Neuro-symbolic is not enough, we need neuro-*semantic*Frank van Harmelen
Ā
Neuro-symbolic (NeSy) AI is on the rise. However, simply machine learning on just any symbolic structure is not sufficient to really harvest the gains of NeSy. These will only be gained when the symbolic structures have an actual semantics. I give an operational definition of semantics as āpredictable inferenceā.
All of this illustrated with link prediction over knowledge graphs, but the argument is general.
JMeter webinar - integration with InfluxDB and GrafanaRTTS
Ā
Watch this recorded webinar about real-time monitoring of application performance. See how to integrate Apache JMeter, the open-source leader in performance testing, with InfluxDB, the open-source time-series database, and Grafana, the open-source analytics and visualization application.
In this webinar, we will review the benefits of leveraging InfluxDB and Grafana when executing load tests and demonstrate how these tools are used to visualize performance metrics.
Length: 30 minutes
Session Overviewā
-------------------------------------------
During this webinar, we will cover the following topics while demonstrating the integrations of JMeter, InfluxDB and Grafana:
- What out-of-the-box solutions are available for real-time monitoring JMeter tests?
- What are the benefits of integrating InfluxDB and Grafana into the load testing stack?
- Which features are provided by Grafana?
- Demonstration of InfluxDB and Grafana using a practice web application
To view the webinar recording, go to:
https://www.rttsweb.com/jmeter-integration-webinar
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
Ā
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Ā
Large platform architecture in (mostly) perl
1. Large platform
architecture in (mostly)
perl - an illustrated
tour
Tomas (t0m) Doran
SĆ£o Paulo.pm perl workshop 2010
YAPC::EU Pisa 2010
2. This talk
ā¢ Is mostly a ramble
ā¢ About what I do for a living
ā¢ Good bits
ā¢ and bad bits (probably mostly bad bits)
ā¢ And when I say āillustratedā, Iām not very
good at diagrams, sorry...
3. Making money from
independent music
ā¢ IMPOSSIBLE
ā¢ No, no it isnāt. But weāre very lucky to have
people who know the music industry
ā¢ A startup would tank
ā¢ Last.fm guys ākeep losing less moneyā
4. The state51 conspiracy
Consolidated Independent
Media Service Provider
ā¢ Several (largely proļ¬table) businesses based
on the same technology platform
ā¢ East London (Brick Lane), a warehouse.
ā¢ > 60% of UK independent content goes
through us somewhere
5. Being S3 on the cheap
ā¢ WAV ļ¬les are big.Videos are bigger.
ā¢ Transcodes arenāt small, especially when
you have 15 of them.
ā¢ My music collection is several hundred
terrabytes
ā¢ Need to be able to serve this stuff fast and
concurrently.
6. MogileFS
ā¢ Is free.
ā¢ Runs on cheap hardware
ā¢ Cheaper then S3.
ā¢ Not so awesome if you arenāt Livejournal
7. Data center design
ā¢ 8 amp racks. Seriously, WTF!?!?!
ā¢ Electricity is more expensive than servers,
ergo rolling hardware upgrades trivially pay
for themselves.
ā¢ Transit is really, really expensive.
ā¢ Worth buying ļ¬ber to other locations to
peer if you need lots of bandwidth.
9. Web architecture
ā¢ App servers apache, apps FastCGI, port 81
ā¢ Varnish + ESI, caching, port 80
ā¢ 1 varnish per host, talks to all the apaches
ā¢ 1 VIP per host
ā¢ Host fail:VIP transfer
ā¢ Apache/app fail (or overload), varnish
rebalances/retries.
10. Web architecture (cont)
ā¢ Varnish doesnāt cache media, just provides
failover.
ā¢ nginx sends the hit to FastCGI app.
ā¢ Returns X-Accel-Redirect.
ā¢ nginx talks to MogileFS, handles delivery.
12. Storage architecture
ā¢ Lots of boxes with lots of disk.
ā¢ Many additional roles to storage. (Mogile
tracker, memcache node, metal encoding,
VMWare, SOAP Service)
ā¢ Not all the boxes do all the roles.
ā¢ All the roles can safely fall over and die.
ā¢ Which is good, as they do. Or the box falls
over. Or a, then b.
14. WAV ļ¬les
ā¢ WAV is a container format.
ā¢ Loosely deļ¬ned.
ā¢ You can stuff XML documents in WAV ļ¬les
ā¢ Some encoders (oh hai ļ¬ac) very picky.
ā¢ ādirtyā and ācleanā WAV ļ¬les.
16. Win32
ā¢ Weāre running ActiveState for hysterical
raisins.
ā¢ No XS modules
ā¢ Thin as possible
17. Encoding
HTTP Nodes
HTTP Nodes
HTTP Nodes Encoding Service Uploading Service
GET
&
PUT
SOAP
media
Encoder
Downloader Uploader
Win32 &
Local Disk Encoder
(mp3)
Encoder
(wma) Unix
18. Snakes On A Plane
ā¢ SOAP actually works ok here, as we
control both ends.
ā¢ Old version of SOAP::Lite
ā¢ Wouldnāt recommend interoperating
19. Logging
ā¢ Used to be terribly hard to debug
ā¢ Push logs into syslog
ā¢ Aggregate in splunk - time correlated from
encoding machines, web service machines,
etc.
ā¢ Much easier to work out what happened.
20. Hardware is shit
ā¢ When you have several 100 Tb, undetected
bit error rate of magnetic media is actually
signiļ¬cant.
ā¢ See also networks, memory, etc.
21. Things will always fail
ā¢ If you need reliability, you have to design it
in from the start.
ā¢ Not only will you have (a lot of) hardware
failures, all the software will break in
unexpected ways. Lets not talk about
netotworks..
ā¢ Maybe you donāt need this..
22. Queueing
ā¢ We have work queues of different types of
media (e.g. mp3/wma/aac etc)
ā¢ In the database.
ā¢ Donāt do this.
23. MySQL sucks
ā¢ 1 type of JOIN
ā¢ No query rewriting
ā¢ Not enough stats for the planner to be
sane
24. This can hurt
ā¢ File Transform table:
ā¢ Master (File)
ā¢ Result (File)
ā¢ Status (pending/complete/failed/running)
ā¢ TransformStep (from/to)
ā¢ Leads to bad join order, massive fail
26. How to fail
ā¢ SELECT all ļ¬le transforms that lead to wma
(millions).
ā¢ JOIN all ļ¬les, ever (millions). Filter to ļ¬nd
those in state āpendingā
ā¢ All pending looks like a bad bet - cardinality
of āall wmasā looks better than cardinality of
āall pendingā.
ā¢ JOIN in the wrong order, nested loop,
screwed..
27. Queueing
ā¢ Did I mention queues in the DB suck?
ā¢ Even if youāre not screwing it up.
ā¢ Get a Message Queue (or at least an async
job server)
ā¢ If your problem is simple - Gearman.
Harder or you need interop - RabbitMQ.
28. Mutable state
ā¢ Mutable state is the enemy
ā¢ Too many things rw.
ā¢ No idea how an object got to this state
29. Anemic domain model
Object-oriented programming (OOP) is a
programming paradigm that uses "objects" ā
data structures consisting of data ļ¬elds and
methods together with their
interactions ā to design applications and
computer programs. Programming techniques
may include features such as data
abstraction, encapsulation, modularity,
polymorphism, and inheritance.
30. Anemic domain model
ā¢ Superset of too much mutable state
ā¢ Able to create invalid objects
ā¢ Able to make previously valid objects
invalid
ā¢ Violation of the encapsulation and
information hiding principles.
31. scripts
ā¢ Lots of our business logic was in scripts
that manipulated objects
ā¢ You need people to run scripts (in screen
sessions)
ā¢ Ewwww, ewwwww.
32. Jobs
ā¢ Moved to a job based approach
ā¢ Jobs started by ļ¬le creation, or changing
state of something in a web app
ā¢ Jobs sent via message queuing.
ā¢ Results go via message queueing
ā¢ Jobs trigger other jobs
33. Jobs Example
ā¢ Validate XLS ļ¬le supplied with order.
ā¢ Valid ļ¬les trigger another job to create
objects for each thing in the XLS
ā¢ This then triggers another job to create
transforms, which are then done...
ā¢ ... etc ...
ā¢ Canāt do this workļ¬ow in a web request.
34. Jobs Future
ā¢ More automation of things people run
scripts for.
ā¢ Automatic job regeneration (you will lose
messages).
35. Lava ļ¬ow
ā¢ Old (possibly unclean/invalid) data
ā¢ Old (unused/unmaintained) code
ā¢ āWhat harm does it doā
37. Data consistency
ā¢ This should theoretically be the same thing
as relational integrity.
ā¢ In practice...
38. Mumble View Crap
ā¢ Too much logic in templates
ā¢ Copy & paste
ā¢ Business objects viewed as unchangeable
ā¢ Deleted 3000 lines from 2 simple
workļ¬ows. This ļ¬xed a dozen bugs.
39. Tangram
ā¢ No LEFT JOIN
ā¢ Displaying a product list becomes an x n
problem.
ā¢ OUCH
ā¢ Keep stupid - put the entire DB hot in
memcache!
40. Donāt do web design
ā¢ You are a programmer
ā¢ Make people pay for a design/CSS/HTML
person
ā¢ Work with them
ā¢ Be happy
41. Love your sysadmins
ā¢ Help them out.
ā¢ Build packages, or local::libs or something
ā¢ Keep everything in revision control
ā¢ Allow things to be sensibly conļ¬gured.
ā¢ DOCUMENT THE POSSIBLE SETTINGS
ā¢ Use systems management - Puppet?
42. Love your logs
ā¢ Active feedback
ā¢ Aggregate in splunk
ā¢ Actively prune useless stuff
ā¢ Actively add useful stuff after a production
incident
43. ESI
ā¢ Is really awesome
ā¢ Make the pain go away
ā¢ PURGE requests
ā¢ Keep everything hot all the time
44. memcache everything
ā¢ Keep the entire database hot in memcache
ā¢ We mostly ask trivial questions, so just
cache those paths.
ā¢ 30 Gb of RAM isnāt actually much (3
boxes..)
45. memcache
ā¢ IS A CACHE
ā¢ Use sequential port numbers and CNAMES
ā¢ E.g. cache0:11210, cache1:11211,
cache2:11212 etc..
ā¢ Run several per machine
ā¢ Allows you to scale capacity and rebalance
without entire cache ļ¬ush.
46. Donāt push bytes
ā¢ X-Sendļ¬le and X-Accel-Redirect
ā¢ I already talked about ļ¬le delivery like this
ā¢ Using 100Mb of RAM to proxy web
requests does not scale.
47. Test everything
ā¢ Redundant systems need testing
ā¢ Youāll still die unexpectedly in production
ā¢ If you can manage it, make responsibility for
deployment SEP.