Gleitend Durchschnittlich Elastische Search
Stack Overflow: The Architecture - Ausgabe 2016 Um eine Vorstellung davon zu bekommen, was das alles macht, lass mich mit einem Update am durchschnittlichen Tag bei Stack Overflow beginnen. So können Sie mit den vorherigen Zahlen ab November 2013 vergleichen. Heres ein Tag der Statistik vom 9. Februar 2016 mit Abweichungen seit dem 12. November 2013: 209.420.973 (61.336.090) HTTP-Anfragen an unsere Load Balancer 66.294.789 (30.19.477) davon waren Seitenlasten 1.240.266.346.053 (404,273,363,426) Bytes (1,24 TB) des HTTP-Verkehrs gesendet 569.449.470.023 (282.874.825.991) Bytes (569 GB) Gesamte erhalten 3,084,303,599,266 (1,958,311,041,954) Bytes (3,08 TB) gesendet 504,816,843 (170,244,740) SQL-Abfragen (aus HTTP-Anfragen allein) 5,831,683,114 (5,418,818,063) Redis schlägt 17.158.874 (nicht verfolgt im Jahr 2013) Elastische Recherchen 3,661,134 (57,716) Tag Motoranforderungen 607,073,066 (48,848,481) ms (168 Stunden) ausgegebene SQL-Abfragen 10.396.073 (-88.950.843) ms (2,8 Stunden) für Redis-Treffer 147.018.571 (14.634.512) ms (40,8 Stunden) für Tag Engine-Anfragen 1.609.944.301 (-1.118.232.744) ms (447 Stunden) ausgegebene Verarbeitung in ASP 22.71 (-5.29) ms Durchschnitt (19.12 ms in ASP) für 49.180.275 Frage Seite rendert 11.80 (-53.2) ms Durchschnitt (8.81 Ms in ASP) für 6.370.077 home page renders Sie können sich fragen, über die drastische ASP Verringerung der Bearbeitungszeit im Vergleich zu 2013 (das war 757 Stunden) trotz 61 Millionen mehr Anfragen pro Tag. Das ist sowohl ein Hardware-Upgrade im Frühjahr 2015 als auch eine Menge Performance-Tuning innerhalb der Applikationen selbst. Bitte vergessen Sie nicht: Leistung ist noch ein Feature. Wenn du neugierig bist auf mehr Hardware-Spezifikationen als ich bin, um nicht zu sorgen. Der nächste Beitrag wird ein Anhang mit detaillierten Hardware-Spezifikationen für alle Server, die die Websites laufen (Ill Update dies mit einem Link, wenn seine Live). Also was hat sich in den letzten 2 Jahren geändert Neben dem Ersatz von einigen Servern und Netzwerk-Ausrüstung, nicht viel. Heres eine Top-Level-Liste der Hardware, die die Standorte läuft heute (noting was ist seit 2013): 4 Microsoft SQL Server (neue Hardware für 2 von ihnen) 11 IIS Web Server (neue Hardware) 2 Redis Servers (neue Hardware) 3 Tag Engineer-Server (neue Hardware für 2 der 3) 3 Elasticsearch-Server (gleich) 4 HAProxy Load Balancers (hinzugefügt 2 zur Unterstützung von CloudFlare) 2 Netzwerke (jeweils ein Nexus 5596 Core 2232TM Fabric Extender auf 10Gbps überall aufgerüstet) 2 Fortinet 800C Firewalls ( Cisco ASR-1001 Router (ersetzt Cisco ASR-1001 Router) 2 Cisco ASR-1001-x Router (neu) Was brauchen wir, um Stack Overflow zu laufen, der sich seit 2013 nicht verändert hat, aber aufgrund der Optimierungen Und neue Hardware, die oben erwähnt wurde, waren unten, um nur 1 Web-Server zu benötigen. Wir haben das unabsichtlich getestet, erfolgreich, ein paar Mal. Um klar zu sein: Ich sage es funktioniert. Ich sage nicht, dass es eine gute Idee ist. Sein Spaß aber jedes Mal. Nun, da wir einige Grundlinien für eine Idee der Skala haben, sehen wir, wie wir diese fancy Web-Seiten machen. Da nur wenige Systeme in völliger Isolation existieren (und unsere ist keine Ausnahme), machen Architekturentscheidungen oft viel weniger Sinn, ohne ein größeres Bild davon, wie diese Stücke in das Ganze passen. Das ist das Ziel hier, um das große Bild zu decken. Viele nachfolgende Beiträge werden tiefe Tauchgänge in bestimmte Bereiche durchführen. Dies wird ein logistischer Überblick mit Hardware-Highlights nur der nächste Beitrag wird die Hardware-Details haben. Für diejenigen von euch hier zu sehen, was die Hardware in diesen Tagen aussieht, hier sind ein paar Bilder, die ich von Rack A (es hat eine passende Schwester Rack B) während unserer Februar 2015 Upgrade: und wenn youre in diese Art von Ding, Heres Das ganze 256 Bild Album aus dieser Woche (du bist verdammt richtig, dass Zahlen absichtlich). Jetzt können wir in das Layout graben. Heres ein logischer Überblick über die wichtigsten Systeme im Spiel: Ground Rules Hier sind einige Regeln, die global gelten, also muss ich sie nicht mit jedem Setup wiederholen: Alles ist überflüssig. Alle Server und Netzwerkgeräte haben mindestens 2x 10Gbps Konnektivität. Alle Server verfügen über 2 Stromversorgungen über 2 Stromversorgungen von 2 USV-Einheiten, die von 2 Generatoren und 2 Versorgungseinrichtungen unterstützt werden. Alle Server haben einen redundanten Partner zwischen Rack A und B. Alle Server und Services sind über ein anderes Rechenzentrum (Colorado) doppelt redundant, obwohl ich meistens über New York rede. Alles ist überflüssig Die Internets Zuerst musst du usthats DNS finden. Das Finden von uns muss schnell sein, also bewirtschaften wir das auf CloudFlare (derzeit), weil sie DNS-Server näher an fast jedem auf der ganzen Welt haben. Wir aktualisieren unsere DNS-Datensätze über eine API und sie machen das Hosting von DNS. Aber da waren Rucke mit tief verwurzelten Vertrauensfragen, wir haben noch unsere eigenen DNS-Server. Sollte die Apokalypse passieren (vermutlich durch die GPL, Punyon oder Caching verursacht) und die Leute immer noch programmieren wollen, um ihren Verstand zu nehmen, Nachdem Sie unser geheimes Versteck gefunden haben, kommt HTTP-Verkehr von einem unserer vier ISPs (Level 3, Zayo, Cogent und Lightower in New York) und fließt durch einen unserer vier Edge Router. Wir sehen mit unseren ISPs mit BGP (ziemlich Standard), um den Verkehrsfluss zu kontrollieren und bieten mehrere Wege für den Verkehr, um uns am effizientesten zu erreichen. Diese ASR-1001 und ASR-1001-X Router sind in 2 Paaren, jeder Service 2 ISPs in aktive fashionso waren hier redundant. Obwohl sie alle auf dem gleichen physischen 10Gbps-Netzwerk sind, ist der externe Verkehr in separaten isolierten externen VLANs, die auch die Load Balancer angeschlossen sind. Nachdem du durch die Router gefahren bist, bist du für einen Load Balancer geleitet. Ich vermute, das kann eine gute Zeit zu erwähnen, wir haben eine 10Gbps MPLS zwischen unseren 2 Rechenzentren, aber es ist nicht direkt an der Bedienung der Seiten beteiligt. Wir verwenden diese für die Datenreplikation und die schnelle Wiederherstellung in den Fällen, in denen wir einen Burst brauchen. Aber Nick, das ist nicht überflüssig Nun, du bist technisch korrekt (die beste Art von richtig), das ist ein einziger Punkt des Versagens auf seinem Gesicht. Aber warten Wir pflegen 2 weitere Failover OSPF-Routen (die MPLS ist 1, diese sind 2 und 3 durch Kosten) über unsere ISPs. Jeder der oben erwähnten Sätze verbindet sich mit dem entsprechenden Satz in Colorado, und sie laden den Balken zwischen der Failover-Situation aus. Wir könnten beide Sätze an beide Sätze anschließen und haben 4 Pfade, aber, gut, was auch immer. Weitergehen Load Balancers (HAProxy) Die Load Balancer laufen HAProxy 1.5.15 auf CentOS 7. Unser bevorzugter Geschmack von Linux. TLS (SSL) Verkehr wird auch in HAProxy beendet. Sei hart bei HAProxy 1.7 bald für HTTP2 Unterstützung. Im Gegensatz zu allen anderen Servern mit einem Dual 10Gbps LACP Netzwerk Link hat jeder Load Balancer 2 Paare von 10Gbps: eine für das externe Netzwerk und eine für die DMZ. Diese Boxen verfügen über 64 GB oder mehr Speicher, um die SSL-Verhandlung effizienter zu gestalten. Wenn wir mehr TLS-Sessions im Speicher für die Wiederverwendung zwischenspeichern können, gibt es weniger, um auf nachfolgende Verbindungen zu demselben Client neu zu berechnen. Das heißt, wir können die Sessions schneller und günstiger wieder aufnehmen. Angesichts der Tatsache, dass RAM ist ziemlich billig Dollar-weise, es ist eine einfache Wahl. Die Load Balancer selbst sind ein ziemlich einfaches Setup. Wir hören verschiedene Standorte auf verschiedenen IPs (meistens für Zertifikatsanliegen und DNS-Management) und Route zu verschiedenen Backends, die hauptsächlich auf dem Host-Header basieren. Die einzige Sache der Anmerkung, die wir hier tun, ist Rate Begrenzung und einige Header-Captures (gesendet von unserer Web-Tier) in die HAProxy-Syslog-Nachricht, so dass wir Performance-Metriken für jede einzelne Anfrage aufzeichnen können. Gut abdecken, dass auch später Web-Tier (IIS 8.5, ASP MVC 5.2.3 und 4.6.1) Die Load-Balancer füttern den Traffic auf 9 Server, die wir als primäre (01-09) und 2 devmeta (10-11, unsere Staging-Umgebung) Webserver verweisen. Die primären Server führen Dinge wie Stack Overflow, Karriere und alle Stack Exchange-Sites außer meta. stackoverflow und meta. stackexchange. Die auf den letzten 2 Servern laufen. Die primäre QampA-Bewerbung selbst ist Mehrfachmieter. Dies bedeutet, dass eine einzige Anwendung die Anfragen für alle QampA-Seiten bedient. Anders ausgedrückt: Wir können das gesamte QampA-Netzwerk aus einem einzigen Anwendungspool auf einem einzigen Server ausführen. Andere Anwendungen wie Karriere, API v2, Mobile API, etc. sind getrennt. Heres, was die primären und dev-Stufen aussehen wie in IIS: Heres, was Stack Overflows Verteilung über die Web-Tier sieht aus wie in Opserver (unsere interne Monitoring-Dashboard): und Heres, was diese Web-Server aussehen aus einer Nutzungsperspektive: Ill gehen, warum waren So überproportiert in künftigen posten, aber die highlight artikel sind: rollen bauen, kopfraum und redundanz. Service Tier (IIS, ASP MVC 5.2.3 Net 4.6.1 und HTTP. SYS) Hinter diesen Webservern befindet sich die sehr ähnliche Service-Stufe. Es läuft auch IIS 8.5 auf Windows 2012R2. Diese Stufe führt interne Dienstleistungen durch, um die Produktionswege und andere interne Systeme zu unterstützen. Die beiden großen Spieler hier sind Stack Server, der die Tag Engine betreibt und basiert auf http. sys (nicht hinter IIS) und der Providence API (IIS-basiert). Fakten: Ich muss die Affinität auf jeden dieser 2 Prozesse einstellen, um auf separaten Sockeln zu landen, da Stack Server nur den L2- und L3-Cache beim Auffrischen von Fragelisten in einem 2-Minuten-Intervall dampft. Diese Service-Boxen sind schweres Heben mit dem Tag-Engine und Backend-APIs, wo wir Redundanz benötigen, aber nicht 9x Redundanz. Zum Beispiel laden alle Beiträge und ihre Tags, die alle n Minuten aus der Datenbank ändern (derzeit 2) ist nicht so billig. Wir wollen nicht, dass die Last 9 mal auf die Web-Tier 3 mal genug ist und gibt uns genug Sicherheit. Wir konfigurieren diese Boxen auch auf der Hardwareseite unterschiedlich, um für die verschiedenen Rechenbelastungseigenschaften des Etikettiermotors und der elastischen Indexieraufgaben (die auch hier laufen) besser zu optimieren. Die Tag-Engine ist ein relativ kompliziertes Thema an sich und wird eine engagierte Post sein. Die Grundlagen sind: Wenn Sie fragenstaggedjava besuchen. Sie schlagen die Tag-Engine, um zu sehen, welche Fragen passen. Es ist alles von unserem Tag passend außerhalb der Suche. So die neue Navigation. Etc. sind alle mit diesem Service für Daten. Cache amp PubSub (Redis) Wir verwenden Redis für ein paar Dinge hier und seine Rock solide. Trotz etwa 160 Milliarden Ops pro Monat ist jede Instanz unter 2 CPU. Normalerweise viel niedriger: Wir haben ein L1L2 Cache-System mit Redis. L1 ist HTTP-Cache auf den Webservern oder was auch immer die Anwendung im Spiel ist. L2 fällt zurück zu Redis und holt den Wert aus. Unsere Werte werden im Protobuf-Format gespeichert. Via protobuf-dot-net von Marc Gravell. Für einen Client, verwendet StackExchange. Redis geschrieben in-house und Open Source. Wenn ein Web-Server einen Cache-Miss in L1 und L2 bekommt, holt er den Wert aus der Quelle (eine Datenbank-Abfrage, API-Aufruf usw.) und setzt das Ergebnis sowohl im lokalen Cache als auch in der Redis. Der nächste Server, der den Wert verliert, kann L1 verpassen, würde aber den Wert in L2Redis finden, eine Datenbankabfrage oder einen API-Aufruf speichern. Wir führen auch viele QampA-Seiten, so dass jede Website eine eigene L1L2-Caching hat: durch das Tastenpräfix in L1 und die Datenbank-ID in L2Redis. Gehen Sie hier in einer zukünftigen Post weiter. Neben den 2 Haupt-Redis-Servern (Masterslave), die alle Site-Instanzen ausführen, haben wir auch eine maschinelle Lerninstanz, die über 2 weitere dedizierte Server (aufgrund von Speicher) gesperrt ist. Dies wird verwendet, um Fragen auf der Homepage zu empfehlen, besser auf Arbeitsplätze abgestimmt, etc. Es ist eine Plattform namens Providence, die von Kevin Montrose hier abgedeckt ist. Die Haupt-Redis-Server haben 256 GB RAM (ca. 90 GB im Einsatz) und die Providence-Server haben 384 GB RAM (ca. 125 GB im Einsatz). Redis ist nicht nur für Cache aber es hat auch einen veröffentlichen amp Teilnehmer-Mechanismus, wo ein Server eine Nachricht veröffentlichen kann und alle anderen Abonnenten erhalten es mit nachgeschalteten Clients auf Redis-Sklaven. Wir verwenden diesen Mechanismus, um L1-Caches auf anderen Servern zu löschen, wenn ein Webserver eine Entfernung für Konsistenz macht, aber theres eine andere große Verwendung: websockets. Websockets (NetGain) Wir verwenden Websockets, um Echtzeit-Updates für Benutzer wie Benachrichtigungen in der oberen Leiste, Abstimmungszählungen, neue Nav-Zählungen, neue Antworten und Kommentare und ein paar andere Bits zu schieben. Die Socket-Server selbst verwenden rohe Sockets, die auf der Web-Ebene laufen. Es ist eine sehr dünne Anwendung auf unserer Open-Source-Bibliothek: StackExchangeGain. Während des Gipfels haben wir etwa 500.000 gleichzeitige Webseitenverbindungen offen. Das ist eine Menge von Browsern. Tatsache: Einige dieser Browser sind seit über 18 Monaten geöffnet. War nicht sicher, warum. Jemand sollte überprüfen, ob diese Entwickler noch am Leben sind. Heres, was diese Woche gleichzeitiges Websuchmuster aussieht: Warum Websockets Sie sind enorm effizienter als das Polling auf unserer Skala. Wir können einfach mehr Daten mit weniger Ressourcen auf diese Weise, während immer mehr Instant für den Benutzer. Sie sind nicht ohne Probleme thoughephemeral Port und Datei behandeln Erschöpfung auf der Load Balancer sind Spaß Probleme gut Deckung später. Suche (Elasticsearch) Spoiler: Es gibt hier nicht viel zu begeistern Die Web-Tier macht hübsche Vanille-Suche gegen Elasticsearch 1.4, mit dem sehr schlanken Hochleistungs-StackExchange. Elastic Client. Im Gegensatz zu den meisten Sachen haben wir keine Pläne, die Quelle zu öffnen, nur weil es nur eine sehr schlanke Untermenge der API, die wir verwenden, aussetzt. Ich glaube fest daran, dass es mit der Entwickler-Verwirrung mehr schaden würde als gut. Verwenden Sie elastisch für die Suche. Berechnen von Fragen und Anregungen, wenn eine Frage gestellt wird. Jeder Elastische Cluster (theres einer in jedem Rechenzentrum) hat 3 Knoten, und jeder Standort hat seinen eigenen Index. Karriere hat noch einige Indizes. Was macht unser Setup ein wenig Nicht-Standard in der elastischen Welt: Unsere 3 Server-Cluster sind ein bisschen günstiger als der Durchschnitt mit allen SSD-Speicher, 192 GB RAM und Dual 10 Gbit / s Netzwerk jeder. Die gleichen Anwendungsdomänen (ja, wurden mit Core hier verschraubt) in Stack Server, dass Host der Tag-Engine auch ständig Elemente in Elasticsearch. Wir machen hier einige einfache Tricks wie ROWVERSION in SQL Server (die Datenquelle) verglichen mit einem letzten Positionsdokument in Elastic. Da es sich wie eine Sequenz verhält, können wir alle Gegenstände, die sich seit dem letzten Pass geändert haben, einfach greifen und indizieren. Der Hauptgrund war auf Elasticsearch statt etwas wie SQL Volltextsuche ist Skalierbarkeit und bessere Zuweisung von Geld. SQL-CPUs sind vergleichsweise sehr teuer, Elastik ist billig und hat weit mehr Features in diesen Tagen. Warum nicht Solr. Wir wollen über das gesamte Netzwerk (viele Indizes auf einmal) suchen, und dies wurde nicht zur Entscheidungszeit unterstützt. Der Grund war nicht auf 2.x noch ist eine große Veränderung zu den Typen bedeutet, dass wir alles neu berechnen müssen, um ein Upgrade durchzuführen. Ich habe einfach nicht genug Zeit, um die notwendigen Änderungen und Migrationsplan noch zu machen. Datenbanken (SQL Server) verwendeten SQL Server als unsere einzige Quelle der Wahrheit. Alle Daten in Elastic und Redis stammen aus SQL Server. Wir führen 2 SQL Server-Cluster mit AlwaysOn Availability Groups aus. Jeder dieser Cluster hat 1 Master (fast die ganze Last) und 1 Replik in New York. Darüber hinaus haben sie 1 Replik in Colorado (unser DR Rechenzentrum). Alle Repliken sind asynchron. Der erste Cluster ist ein Satz von Dell R720xd Servern mit jeweils 384GB RAM, 4TB PCIe SSD Space und 2x 12 Cores. Es beherbergt den Stack Overflow, Sites (schlechter Name, Ill erklären später), PRIZM und Mobile Datenbanken. Der zweite Cluster ist ein Satz von Dell R730xd Servern, jeweils mit 768GB RAM, 6TB PCIe SSD Raum und 2x 8 Kerne. Dieser Cluster läuft alles andere. Diese Liste enthält Karriere. ID öffnen Chatten Unser Ausnahmeprotokoll Und jede andere QampA-Site (z. B. Super User Server-Fehler usw.). CPU-Auslastung auf der Datenbank-Ebene ist etwas, was wir gerne sehr niedrig halten, aber seine eigentlich ein wenig hoch im Moment aufgrund einiger Plan-Cache-Probleme wurden angesprochen. Ab sofort sind NY-SQL02 und 04 Meister, 01 und 03 sind Repliken, die wir heute schon bei einigen SSD-Upgrades neu gestartet haben. Heres, was die letzten 24 Stunden aussieht: Unsere Verwendung von SQL ist ziemlich einfach. Einfach ist schnell. Obwohl einige Fragen verrückt sein können, ist unsere Interaktion mit SQL selbst ziemlich Vanille. Wir haben einige Legacy Linq2Sql. Aber alle neuen entwicklungen nutzen dapper Unsere Open-Source-Micro-ORM mit POCOs. Lass mich einen anderen Weg: Stack Overflow hat nur 1 gespeicherte Prozedur in der Datenbank und ich beabsichtige, diese letzte Spur in Code zu verschieben. Okay lässt sich auf etwas wechseln, das dir direkt helfen kann. Ive erwähnt ein paar von diesen oben, aber krank stellen eine Liste hier von vielen Open-Source-Bibliotheken, die wir für die Welt zu verwenden. Wir öffnen sie, weil sie keinen Kerngeschäft haben, aber der Welt der Entwickler helfen können. Ich hoffe, Sie finden diese nützliche heute: Dapper (Core) - Hochleistungs-Micro-ORM für ADO StackExchange. Redis - Hochleistungs-Redis-Client MiniProfiler - Leichtes Profiler, das wir auf jeder Seite laufen (auch unterstützt Ruby, Go und Node) Außergewöhnlich - Fehler Logger für SQL, JSON, MySQL, etc. Jil - Hochleistungs-JSON (de) Serializer Sigil - Ein CIL Generation Helper (für wenn C ist nicht schnell genug) NetGain - Hochleistungs-Webserver-Server Opserver - Monitoring Dashboard Abfrage die meisten Systeme Direkt und fütterung von Orion, Bosun oder WMI auch. Bosun - Backend-Monitoring-System, geschrieben in Go Next up ist eine detaillierte aktuelle Hardware-Liste, was läuft unser Code. Danach gehen wir die Liste hinunter. Bleib dran. Bitte aktivieren Sie JavaScript, um die Kommentare zu sehen, die von Disqus angetrieben werden. Das nächste Profil in unserer How I Work Serie ist Colton Fischer. Colton ist einer der Ernte von neuen PeopleSoft-Bloggern, die auf der Bühne im Jahr 2016 platzen. Sein PeopleSoft Mods Blog ist eine Schatzgrube von großem Inhalt und wenn du nicht dort warst, bevor es nicht mehr durch die Colton8217s historischen Beiträge 8211, wie er es gerade sieht Vorhandene ausgelieferte Funktionalität aber erweitert PeopleSoft in einer Weise, dass it8217s klar, um den Geschäftsvorteil zu sehen, häufig erklären, wie Sie die gleichen Resultate erhalten können. Name: Colton Fischer Beruf: Anwendungsentwickler an der Universität von Houston Ort: Houston, Texas, USA Aktueller Computer: Mein Desktop ist ein Dell Optiplex 9020 und mein Laptop ist ein Dell Precision 3510 Aktuelle mobile Geräte: Samsung Galaxy S5 Ich arbeite: Eagerly What Appssoftwaretools can8217t Sie leben ohne Snipping Tool Nützliches Tool für, wenn ich einen schnellen Screenshot brauche, um zu dokumentieren oder etwas VPN Client und Remote Desktop zu demonstrieren, ich arbeite nicht von zu Hause zu viel, aber das ist ein Lebensretter, wenn ich einige Dateien auf meiner Maschine im Büro vergesse YouTube Mobile App Ich bin eher ein visueller Lernender, also genieße ich es, pädagogische YouTube Videos auf meinem Handy zu sehen, wenn ich irgendeine Zeit habe ESPN Mobile App Erlaubt mir, mit College und Profi Sport zu halten Neben deinem Handy und Computer, welches Gadget kannst du nicht leben Ohne Id muss meine Kaffeemaschine sagen. Das Ding bekommt mich jeden Morgen, weil ich nicht weiß, was ich tun würde, wenn ich keinen Kaffee hätte. Was ist dein Arbeitsbereich, wie ich sagen würde, dass mein Arbeitsbereich ziemlich einfach ist. Ich werde zugeben, dass es normalerweise nicht so sauber ist wie in diesem Bild. Die meisten der Arbeit, die ich tue, passiert auf meinem Desktop-Computer. Ich benutze meinen Laptop für das Ausführen von persönlichen Demosystemen, um experimentelle Entwicklung zu machen. Ich benutze auch die Systeme auf meinem Laptop, wenn ich die Entwicklung, die konstante App und Web-Server bounces erfordert, so dass ich nicht stören jemand anderes erfordert. Was hörst du zu, während du arbeitest, ich genieße die meisten alle Genres der Musik, aber was ich höre, während ich arbeite, stützt sich stark auf die Art der Arbeit, die ich tue. Wenn ich etwas tue, was mich dazu braucht, hart zu denken, höre ich weiche akustische Gitarrenlieder an. Wenn ich nicht zu hart denken muss, dann finde ich meistens, dass ich Metal Rock, Punk Rock und gelegentlich Dubstep höre. Welche PeopleSoft-bezogenen Produktivitäts-Apps verwenden Sie, ich habe App Designer, SQL Developer und Chrome Windows jederzeit geöffnet. Ich benutze Chrome Add-ons oder andere Web-basierte Produktivitäts-Apps. Ich benutze Advanced REST Client für Chrome, wenn ich mit Web Services arbeiten muss. Wenn ich schnell etwas unformatiertes XML ansehen muss, verwende ich einen Online-XML-Viewer, um ihn für mich zu formatieren. Ich arbeite oft mit base64 codierten Werten, also verwende ich einen Online base64 Decoder, um die decodierten Werte zu erhalten. Ich benutze auch die Chrome DevTools, um die Quelle hinter Felder auf PeopleSoft Seiten zu sehen. Hast du ein 2-zeiliges Trinkgeld, dass einige andere vielleicht nicht wissen, dass ich nicht sicher bin, wie gut das ist, aber ich habe vor kurzem entdeckt, dass Meta-HTML im Nachrichtenkatalog verwendet werden kann. Die Verwendung von Meta-HTML (oder sogar regulären HTML) in Nachrichten kann für einige coole Konfigurations-basierte Funktionalität. Was SQLCode findest du dich am meisten schreibe ich schreibe normalerweise Abfragen auf die Sicherheitstabellen, die mit Rollen und Berechtigungslisten umgehen. Doch in letzter Zeit habe ich schon einige Abfragen auf die PSACCESSLOG - und PSPTLOGINAUDIT-Tische geschrieben. Es gibt einige wirklich interessante Informationen in diesen Tabellen aus einer Sicherheitsperspektive. Was wäre das eine Element you8217d zu PeopleSoft hinzufügen, wenn Sie könnte ich möchte einige integrierte Funktionalität zu sehen, um es einfacher zu identifizieren sensible Daten (Bankkontonummern, SSNs, etc.) Felder in PeopleSoft. Es wäre schön, wenn die Felddefinitionen, die verwendet werden, um gespeicherte Daten anzuzeigen, eine Einstellung haben, um das Niveau der Empfindlichkeit zu unterscheiden. Wenn diese Informationen in den Meta-Datentabellen gespeichert sind, würde es möglich sein, problemlos Abfragen zu schreiben, um festzustellen, wo in den anwendungsempfindlichen Daten belichtet wird. Dies ermöglicht es den PeopleSoft-Sicherheitsadministratoren, ihre PeopleSoft-Anwendungen effektiver zu sichern. Was für ein alltägliches Ding bist du besser als jeder andere Ich bin mir nicht sicher, ob ich besser bin als irgendjemand, aber ich bin gut im Zeitmanagement und nicht zaudernd. Wie machst du dich gesund und glücklich, ich spiele gerne Golf und Tennis, wenn ich jemanden zum Spielen habe. Wenn ich solo bin und ich etwas körperliches machen will, gehe ich meistens skateboard. Etwas anderes das hält mich glücklich (aber nicht so gesund) spielt Xbox. Was ist der beste Rat, den du jemals empfangen hast. Der beste Ratschlag, den ich erhalten habe, ist, jeden Tag frisch und mit einem sauberen Schiefer zu beginnen, unabhängig davon, wie der Vortag ging. Es ist einfach, Kämpfe und Frustrationen mit uns von Tag zu Tag zu tragen, aber es behindert nur Ihre Produktivität und Aussicht. There8217s eine große Episode von Marc Weintraub8217s PeopleSoft Talk Interview-Serie, mit einer 30-minütigen Diskussion mit Paco Aubrejuan. Es gibt einige großartige Punkte für jeden, um es wegzunehmen, aber hier sind meine Highlights: Auf dem aktuellen Support Enddatum Dezember 2027: There8217s kein Plan zur Beendigung der Unterstützung für PeopleSoft dann, es8217s eigentlich nicht so wichtig ein Date. Es passiert, dass das Datum gerade jetzt, dass unsere lebenslange Unterstützung geht auf 8230, die wahrscheinlich gewann den Fall und als wir näher an diesem Tag kommen, ist der Plan, diese Daten aus zu verschieben. Auf Fortsetzung Investition: Für mich sind Investition und Unterstützung ein und dasselbe. Es ist schwierig, Anwendungen zu unterstützen, ohne sie weiter zu verbessern. Wir planen, sie zu unterstützen und zu verbessern. Auf Fluid Adoption: Wir haben 2-300 Kunden, die davon leben, und viele von denen aren8217t leben mit nur ein paar Anwendungen, aber mit Fluid auf der ganzen Linie. Wir haben diesen Eishockey-Stick in Bezug auf die Adoption bekommen, wo die Mehrheit unserer Kunden, die Projekte oder Upgrades durchführen, Fluid einsetzt. Bei der Ersetzung von SES mit Elasticsearch: 8220it8217s einfacher, billiger, schneller, besser für Kunden, um Elasticsearch versus SES8221 und vieles mehr auf Cloud, Fluid-Zulassungen und selektive Adoption laufen. It8217s lohnt sich eine Uhr: In einem früheren Beitrag mit dem Titel Banishing PeopleSoft Mythen habe ich meine Perspektive über den aktuellen Stand des PeopleSoft Produktes und Marktplatzes geteilt. Ich dachte, es wäre eine interessante Übung, um zu versuchen, nach vorne zu schauen und zu definieren, was ich denke, dass die Zukunft für die Produktlinie halten könnte. Eines davon könnte ein wenig off-Ziel sein, manche könnten eine Meile aus Ziel und einige, die ich vielleicht meine Meinung geändert haben, wenn Sie mich nächste Woche fragen, aber hoffentlich beginnt es einige Diskussionen. PeopleSoft bewegt sich in die Cloud Ein einfacher zuerst. Es ist ein starker Stoß, um in die Wolke zu ziehen, und das sollte so ziemlich jeder sichtbar sein. Es gibt einige überzeugende Erfolgsgeschichten für PeopleSoft in der Cloud, Kunden haben große Leistungssteigerungen und Flexibilität in der Infrastruktur gewonnen und Geld sparen. Bisher waren diese Erfolgsgeschichten auf AWS, und 8211 in geringerem Maße 8211 auf Azure, aber Oracle will ein Stück von diesem Kuchen jetzt. Die Oracle Compute Cloud sollte eine Option sein, wann immer it8217s eine Diskussion über Cloud-Hosting (und diese Diskussion sollte vor jeder Hardware-Aktualisierung oder Major Upgradeget derzeit gehalten werden). Oracle macht es auch den Kunden leichter, sich in die Cloud zu bewegen. Die PeopleSoft Cloud-Architektur ist eine Reihe von Funktionalität und Tools, die den Übergang erleichtert, und es wird in zukünftigen PeopleTools-Versionen verbessert werden. Der PeopleSoft-Marktplatz bleibt schwere Cedar8217s aktuelle Erfahrung ist, dass es eine Menge Aktivität auf dem Markt gibt. In den kommenden Jahren erwarten wir eine riesige Anzahl von netto neuen Kunden, die PeopleSoft kaufen, aber bestehende Kunden sind sehr loyal gegenüber dem Produkt und werden auch weiterhin die neuen Features nutzen, die dem Produkt hinzugefügt werden. Es ist leicht, sich vorzustellen, dass es in den kommenden Jahren eine weit verbreitete Annahme der Fluid - und Cloud-Architektur geben wird. Mehr LeuteSoft Hosting It8217s wird immer einfacher für Kunden, die Pflege ihrer PeopleSoft-Systeme an Partner 8211 auszulagern, oder in der Zukunft vielleicht sogar Oracle selbst. Die Cloud macht die Infrastruktur deutlich günstiger, und die PeopleSoft Cloud Architecture macht die Verwaltung auch einfacher. Die PeopleSoft-Applikation wird dem Kunden einfach als Service zur Verfügung gestellt, wobei alle Hardware, DBA-Services und Patc hing vom Partner für eine monatliche Monatsgebühr durchgeführt werden. PeopleSoft-Updates könnten auch in diese gerollt werden, da Selective Adoption ein wichtiges Stück des Anwendungspflegemodells ist und sich dem Cloud-Hosting-Modell sehr gut verleiht. Es gab auch andere Fortschritte in PeopleTools, die es einfacher machen, die Anpassungen zu reduzieren 8211, wodurch es für Organisationen erleichtert wird, mehrere Kundenumgebungen zu hosten. Die neue verwandte Content-Event-Mapping-Funktionalität ermöglicht es Ihnen, (einige) benutzerdefinierten Code zu ersetzen, und I8217m sicher, dass die PSAdmin. io Jungs eine Technik für das Hinzufügen von Feldern zu einer Seite über config anstelle von Anpassung (aber ich can8217t finden einen Link für sie). Je näher Sie Vanille sind, desto einfacher ist es, Ihre Anwendung mit der neuesten Sicherheit, Produktfixes und neuen Funktionen zu aktualisieren. Wird Oracle 8220PeopleSoft als Service8221 Derzeit ist die Antwort 8211 zumindest öffentlich 8211 ist 8216No8217 aber das könnte sich im Laufe der Zeit ändern. Oracle bewegt ihr OnDemand-Angebot von physischer Hardware zu Cloud-Infrastruktur, so dass sie die Server hosten und Wartungsressourcen für Clients bereitstellen. PeopleSoft und Container Die nächste Evolution von Virtual Machines ist die Verwendung von 8216container8217 Technologie. Das Problem mit einem Server mit mehreren VMs ist, dass jede VM muss ein eigenes Betriebssystem installiert haben, gehalten gepatched und synchron gehalten werden. Diese 8211 und die andere Software, die geteilt werden könnte 8211 führt eine Menge Duplikation. Container sind wie abgeschnitten VMs, es gibt kein OS innerhalb des Containers, nur die Anwendung selbst. Jeder der Container teilt das OS that8217s auf dem Host installiert. Hier gibt es eine gute Einführung in die Container. Vendoren haben begonnen, diese Container-Technologie anzunehmen 8211 Docker ist bei weitem die bekannteste 8211 und it8217d keine Überraschung, wenn PeopleSoft beginnt, das gleiche zu tun. Es ist großartig, in der Lage sein, in einem anderen App-Server-Container fallen zu können, ohne dass man sich mit einem Gebäude umgehen muss. Die DPKs bekommen uns einen Teil dort, aber das könnte die nächste Progression sein. Zuerst müssen wir warten, bis Oracle Compute Cloud Unterstützung für Docker zuerst (oder was auch immer bissiger Name Oracle gibt, um ihre Docker Äquivalent 8230 vielleicht die 8216Oracle Enterprise Container Management Service8217) Größere Fluid Adoption Irgendwo zwischen 50-60 der Kunden sind auf v9.2, die Bedeutet, dass sie entweder die Verwendung oder Vorbereitung auf die selektive Adoption verwenden. Sobald ein Kunde auf dem Selektiven Adoptionspfad beginnt, finden sie, dass die Fluid UI die Schnittstelle ist, die Updates und Fixes abliefern wird. Dies wird die Fluid-Adoption antreiben. Dies ist gut für Self Service Benutzer als they8217d in der Regel profitieren die meisten von einem Fluid Roll-out. Zwar gibt es einige Schmerzen in immer Fluid auf und läuft alle Rückmeldungen, die wir bis heute gehört haben, dass die who8217ve machte den Sprung sind sehr zufrieden mit den Ergebnissen. Self Service-Nutzer stehen am meisten, da Fluid wirklich PeopleSoft viel mehr zugänglich für seltene Benutzer macht. Die Rolle von SysAdmin ändert sich Die Rolle des PeopleSoft SysAdmin ist dramatisch anders als vor 5 Jahren. Das Aufkommen von PUM, Selective Adoption, DPKs, Puppet und SES sowie die bevorstehende Übernahme der Cloud Delivery Architecture und Elasticsearch haben die Landschaft deutlich verschoben. Viel davon ist eine gute Nachricht. Zum Beispiel haben selektive Adoption und DPKs das SysAdmin8217s Leben einfacher gemacht (sobald das Toolset gelernt wurde). Die Zukunft klingt wie dieser Trend wird sich fortsetzen, da Cloud Manager eine One-Click-Bereitstellung und Erfrischung von Umgebungen ermöglicht, und Elasticsearch verspricht, einige der SES-Kopfschmerzen zu lindern. Diese größere Funktionalität kommt zu einem Kosten für den SysAdmin, und das ist, dass es eine breitere Breite für die Menge der Werkzeuge, die sie erforderlich sind, um zu beherrschen. Die Tage, an denen der SysAdmin nur noch Installationen und Tuning machen musste, sind vergangen. Diese erhöhte Automatisierung bringt die Voraussetzung für DevOps SysAdmins 8211, d. h. SysAdmins, die in der Lage sind, einige Code zu schneiden. Die Rolle des Entwicklers wechselt auch die Entwickler, die die Torpfosten bewegen. Entwickler, die sich gerade erst aus dem Swapping ihrer FuncLibs für App-Pakete erholt haben, rollen nun aus den Nachrichten, dass es noch mehr zu lernen gibt. Fluid bringt eine Anforderung, viel mehr HTML, CSS und einige JavaScript zu kennen. Nachdem ich eine neue Demo gesehen hatte, in der Jim Marion eine Fluid-Seite mit der Chrome Developer-Konsole anstatt PeopleCode komplett neu platzierte, brachte dieses Haus wirklich zu. Die nächste Tech, die über den Hügel bei Deve Lopers kommt, ist Oracle JET 8211 eine Sammlung der nützlichsten JavaScript Frameworks. LogStash für PeopleSoft Ich fühlte, ich sollte mit einem echten 8216out there8217 Vorhersage enden. Mit Elasticsearch können wir sehen, dass Oracle offen ist, um ein neues Drittanbieterprodukt als Teil des Stapels einzuschließen (vorher schien es, als ob es sich um Drittanbieter-Tools handelt, die langsam auslaufen würden), also was andere neue Produkte oder Werkzeuge enthalten könnten Elasticsearch wird von einem gemacht Firma namens Elastic, aber sie haben andere Angebote zusätzlich zu ihrem Kern Suche Produkt. Derjenige, der aus einem PeopleSoft-Point-of-View am attraktivsten aussieht, ist LogStash. I8217ve sah es eine Reihe von Zeiten im Laufe der Jahre an, aber sein Mangel an Windows-Unterstützung war immer eine Barriere für mich, aber jetzt it8217s auf Windows verfügbar. LogStash is a log file aggregation tool, it takes all of the entries in all of your log files spread across all of your servers and makes them available for searching in one central repository. It8217s easy to see how that might be incredibly useful in a PeopleSoft context. There are alternative tools that perform a similar role 8211 Splunk for example 8211 however I think LogStash is the most obvious selection. UPDATE: The PSAdmin. io guys discussed Splunk and LogStash in their latest Podcast . So, there are 8 predictions for the coming years. Have I missed anything glaring Have I got one of them wrong I would like to borrow a few minutes of your time to ask a quick favour. If you haven8217t already, could you please vote 8216Gold8217 for Cedar in the UK PeopleSoft Partner of the Year competition. Here8217s why I believe we8217re worth your vote: We8217ve been serving PeopleSoft customers for 20 years, and in each of the last few years we8217ve worked with more than 40 clients We8217re active members of UKOUG, with multiple employees dedicating time to its committees 8211 quite an investment for a company our size We8217re active in the PeopleSoft community, with multiple blogs and free newsletters We share knowledge freely, with multiple speakers at UKOUG8217s Apps15 and Oracle OpenWorld last year We host our own knowledge sharing events, enabling the PeopleSoft community to network and exchange ideas, whilst Cedar experts and customers share success stories We8217re on the cutting edge, if you want to know about Oracle Public Cloud, Fluid UI or Selective Adoption, we8217re the people to speak to I hope that8217s enough to convince you. If you8217ve voted for us please let me know. If you need more persuasion, please do get in touch. The next profile in our How I Work series is Logesh Balasubramaniam. Logesh is one of the newer bloggers 8211 posting on his LeanIT Designs site 8211 however he provides great content and is usually one of the first to tackle new functionality. He has sometimes even managed to blog about new features before Oracle8217s official post. If you8217re a fan of Logesh8217s work it looks like he8217s been selected to present at OOW this year, alongside his colleague Chamanthi Weerasinghe, on 8220 Bang for Your Buck: A Practical Approach to Optimize Your Selective Adoption8221. Name: Logesh Balasubramaniam Occupation: PeopleSoft Consultant at Presence Of IT, Australia. Location: Auckland, New Zealand. Current computer: Lenovo Thinkpad T440s Current mobile devices: Samsung Galaxy S3 amp iPad Mini 2 I work: To achieve best possible outcome in the realms of Scope, Time amp Cost What appssoftwaretools can8217t you live without Apps 8211 Kindle, linkedin, Keeper(Passwords), doubleTwist Desktop essentials: MS office, Outlook, Notepad, Snipping Tool What8217s your workspace like I am minimalist by nature and my workplace will reflect it. I don8217t tend to carry any baggage(both hard amp soft) and have a compulsion to get rid of anything after its purpose. What do you listen to while you work Silence, help me to focus. Leave my windows open and let in everything that my surroundings offer. What PeopleSoft-related productivity apps do you use Browsers: Chrome amp Firefox, Developer tools in both browsers, Extensions 8211 Wizdler for chrome, HTTPFox for Firefox PeopleTools 8211 Whole suite of development tools and occasionally administration utilities SOAPUI 8211 Everything integration related SQL Developer and SQL Server management studio Do you have a 2-line tip that some others might not know I find 8216My Oracle Support Community (MOSC)8217 to be very active and useful in PeopleSoft application space. Especially for those working on new features in recent product versions, post your queries and you will get immediate help with Oracle specialists. I also find Red Papers released on various topics by Oracle to be a very valuable resource to design solutions especially in integration, security and performance areas. What SQLCode do you find yourself writing most often Having spent most of my time in HCM application, subquery to get MAX(EFFDT), tops my list. What would be the one item you8217d add to PeopleSoft if you could Supportimplement SAML based identity federation. What everyday thing are you better at than anyone else Starting every day with the same eagerness, desire and will I had on my first day at work. What8217s the best advice you8217ve ever received Nothing specific from a person, but an elementary quote that I find most relevant in our profession is 8220A stitch in time save nine8221. As remote work culture and diverse work teams become ubiquitous, proactive communication is key to successful collaboration. Post navigationThis article is from an interview with Zuhaib Siddique. a production engineer at HipChat. makers of group chat and IM for teams. HipChat started in an unusual space, one you might not think would have much promise, enterprise group messaging, but as we are learning there is gold in them there enterprise hills. Which is why Atlassian, makers of well thought of tools like JIRA and Confluence, acquired HipChat in 2012. And in a tale not often heard, the resources and connections of a larger parent have actually helped HipChat enter an exponential growth cycle. Having reached the 1.2 billion message storage mark they are now doubling the number of messages sent, stored, and indexed every few months. That kind of growth puts a lot of pressure on a once adequate infrastructure. HipChat exhibited a common scaling pattern. Start simple, experience traffic spikes, and then think what do we do now Using bigger computers is usually the first and best answer. And they did that. That gave them some breathing room to figure out what to do next. On AWS, after a certain inflection point, you start going Cloud Native, that is, scaling horizontally. And thatrsquos what they did. But theres a twist to the story. Security concerns have driven the development of an on-premises version of HipChat in addition to its cloudSaaS version. Well talk more about this interesting development in a post later this week . While HipChat isnrsquot Google scale, there is good stuff to learn from HipChat about how they index and search billions of messages in a timely manner, which is the key difference between something like IRC and HipChat. Indexing and storing messages under load while not losing messages is the challenge. This is the road that HipChat took, what can you learn Letrsquos seehellip 60 messages per second. 1.2 Billion documents stored 4TB of EBS Raid 8 ElasticSearch servers on AWS 26 front end proxy serves. Double that in backend app servers. 5 terabytes of search data. Hosting . AWS EC2 East with 75 Instance currently all Ubuntu 12.04 LTS Database . CouchDB currently for Chat History, transitioning to ElasticSearch. MySQL-RDS for everything else QueueWorkers server . Gearman (queue) and Curler. (worker) Language . Twisted Python (XMPP Server) and PHP (Web front end) System Configure . Open Source Chef Fabric Code Deployment . Capistrano Monitoring . Sensu and monit pumping alerts to Pagerduty Graphing . statsd Graphite Traffic is very bursty. On weekends and holidays it will be quiet. During peak load is hundreds of requests per second. Chat messages dont actually make up the majority of traffic its presence information (away, idle, available), people connectingdisconnecting, etc. So 60 messages per second may seem low, but it is just an average. HipChat wants to be your notification center, where you go to collaborate with your team and get all the information coming from your tools and other systems. Helps keeps everyone in the loop. Especially with remote offices. The big reason to use HipChat over say IRC, is that HipChat stores and indexes every conversation so you can search for them later. Search is emphasized so you can stay inside HipChat. The win for teams of this feature is that you can go back at any time and remember what happened and what you agreed to do. It will also route messages to multiple devices owned by the same user, as well as temporary message cachingretry if your device is unreachable when a message is sent. Growth is from more customers, but also greater engagement as more customers use the product at each site. Also seeing growth from their API integration. Storage and searching of messages is the major scalability bottleneck in their system. HipChat uses XMPP so any XMPP client can connect into the system, which is a huge win for adoption. And theyrsquove built their own native clients (Windows, Linux, Mac, iOS, Android) with extensions like PDF viewing, custom emoticons, automatic user registration, etc. Not long ago bringing tools like Wikis into a corporate culture was almost impossible. Now enterprise level tools seem to accepted. Why now Text based communication is now common and accepted. We have texting, IM, and Skype, so using chatting tools is now natural. Rise of distributed work teams. Teams are more and more distributed. We canrsquot just sit down together and get a lecture. Therersquos a need to document everything which means organizing communication is perceived as a great asset. Enhanced features. Features like inline images, animated gifs, etc make it fun, which appeals to wider groups of people. HipChat has an API which makes it possible to write tools analogous to IRC bots. Example use is for Bitbucket commits. At 10:08 developer X commits some code to fix a bug. It is sent out via HipChat with links directly to the code commit and the commit log. All automated. Bitbucket commit hits a web hook and uses one of the addons to post the information. Addons help with writing your own bots. Go to your Bitbucket account. Say I have my API token and I want to post to this API whenever a commit happens. Works similarly for GitHub. Started with Adobe Air on the client side, it leaked memory and would take down machines. So moved to native apps. A pain, but a good pain. They have users across all platforms in all parts of a company. You need to be where users are at. Want users to have a great experience on all OSs. Users are everyone, not just techies. XMPP Server Architecture HipChat is based on XMPP, a message is anything inside an XMPP stanza. which could be anything from a line of text or long section of log output. They didnrsquot want to talk about their XMPP architecture, so there arenrsquot a lot of details. Instead of using a 3rd party XMPP server, theyrsquove built their own using using Twisted Python and XMPP libraries. This allows allows the creation of a scalable backend, user management, and easy addition of features without fighting someone elses code base. RDS on AWS is used for user authentication and other areas where transactions and SQL would be useful. Itrsquos a stable, proven technology. For the on-premises product they use MariaDB. Redis for caching. Information like which users are in which rooms, presence information, who is online, etc, so it doesnrsquot matter which XMPP server you connect to, the XMPP server itself is not a limit. Pain point is Redis doesnrsquot have clustering (yet). For high availability a hotcold model is used so a slave is ready to go. Failover takes about 7 minutes from a master to a slave. Slave promotion is by hand, itrsquos not automated. Increased loads exposed a weakness in the proxy server and how many clients they could handle. This is a real problem as not losing messages is a high priority. Customers indicate that not dropping messages is more important than low latency. Users would rather get messages late than not at all. With 6 XMPP servers the system worked well. As the connection counts increased they started seeing unacceptable latency. Connections donrsquot just come from clients, but also bots supporting their programmatic interfaces. As a first pass they split out front-end servers and app servers. Proxies handle connections and the backend apps processes stanzas. The number of frontend servers is driven by the number of active listening clients and not the number of messages sent. Its a challenge to keep so many connections open while providing timely service. After fixing the datastore issues the plan is to look into how to optimize the connection management. Twisted works well, but they have a lot of connections, so have to figure out how to handle that better. Storage Architecture At 1 billion messages sent on HipChat while experiencing growth, they pushed the limits of their CouchDB and Lucene solution for storing and searching messages. Thought Redis would be the failure point. Thought CouchLucene would be good enough. Didnrsquot do proper capacity planning and looking at message growth rate. Growing faster than they thought and shouldnrsquot have focussed so much on Redis and focused on data storage instead. At that time they believed in scaling by adding more horsepower, moving up to larger and larger Amazon instances. They got to the point where with their growth this approach would only work for another 2 months. So they had to do something different. CouchLucene was not updated in over year and it couldnrsquot do faceting. Another reason for something different. At about half a billion messages on Amazon was a tipping point. With a dedicated server and 200 Gig of RAM their previous architecture might have still worked, but not in a cloud with limited resources. They wanted to stay on Amazon. Like its flexibility. Just spin up a new instance and chug along. Amazonrsquos flakiness makes you develop better. Donrsquot put all your eggs in one basket, if a node goes down you have deal with it or traffic will be lost for some users. Uses a dynamic model. Can lose an instance quickly and bring up new instances. Cloud native type stuff. Kill a node at any time. Kill a Redis master. Recover in 5 minutes. Split across all 4 US-East availability zones currently, but not yet multi-region. EBS only letrsquos you have 1TB of data. Didnrsquot know about this limit when they ran into it. With Couch they ran into problems with EBS disk size limitations. HipChatrsquos data was .5 terabytes. To do compaction Couch had to copy data into a compaction file which doubles the space. On a 2 TB RAID hitting limits during compaction on the weekends. Didnrsquot want a RAID solution. Amazon DynamoDB wasnrsquot an option because they are launching a HipChat Server, a hosted service behind the firewall. HipChat Server drives decisions on the tech stack. Private versions are a host your own solution. Certain customers canrsquot use the cloudSaaS solution, like banks and financial institutions. NSA has spooked international customers. Hired two engineers to create an installable version of the product. Redis Cluster can be self-hosted and it works on AWS as can ElasticSearch. Instead of RDS they use MariaDB in the on-premises version. Canrsquot consider a full SaaS solution as that would be a lockin. Now transitioning to ElasticSearch. Moved to ElasticSearch as their storage and search backend because it can eat all the data they can feed it, it is highly available, it scales transparently by simply adding more nodes, it is multi-tenant, it can transparently with sharding and replication handle a node loss, and itrsquos built on top of Lucene. Didnrsquot really need a MapReduce functionality. Looked into BigCouch and Riak Search (didnrsquot look well baked). But ES performance on a GET was pretty good. Liked the idea of removing a component, one less thing to troubleshoot. ES HA has made them feel really confident in the solidity of their system. Lucene compatible is a big win as all their queries are already Lucene compatible, so it was a natural migration path. Customer data is quite varied, ranging from chat logs to images, so response type are all over the place. They need to be able to quickly direct query data from over 1.2 Billion docs. In a move that is becoming more and more common, HipChat is using ElasticSearch as their key-value store too, reducing the number of database systems they need and thus reducing overall complexity. Performance and response times were so good they thought why not use it Between 10ms and 100ms response times. It was beating Couch in certain areas without any caching in front of it. Why have multiple tools With ES a node can go down and nobody notices, you will get an alert about high CPU usage while it is rebalancing, but it keeps chugging along. Have 8 ES nodes to handle growth in traffic. As with all Java based products JVM tuning can be tricky. To use ES must capacity plan for how much heap space yoursquoll be using Test out caching. ES can cache filter results, it is very fast, but you need a lot of heap space. With 22 gigs of heap on 8 boxes, memory was exhausted with caching turned on. So turn off cache unless planned for. Had problems with caching because it would hit an out of memory error and then fail. The cluster self healed in minutes. Only a handful of users noticed a problem. Automated failover on Amazon is problematic because of the network unreliability issues. In a cluster it can cause an election to occur errantly. Ran into this problem with ElasticSearch. Originally had 6 ES node running as master electable. A node would run out of memory or hit a GC pause and on top of that a network loss. Then others could no longer see the master, hold an election, and declare itself a master. Flaw in their election architecture that they donrsquot need a quorum. So therersquos a brain split. Two masters. Caused a lot of problems. Solution is to run ElasticSearch masters on dedicated nodes. Thatrsquos all they do is be the master. Since then there have been no problems. Masters handle how shard allocation is done, who is primary, and maps where replica shards are located. Makes rebalancing much easier because the masters can handle all the rebalancing with excellent performance. Can query from any node and will do the internal routing itself. Uses a month index. Every month is a separate index. Each primary index has 8 shards then two replicas on that. If one node is lost the system still functions. Not moving RDS into ES. Stuff they need SQL for is staying in RDSMariaDB, typicall User management data. A lot of cache in Redis in a masterslave setup until Redis Cluster is released. Therersquos a Redis stat server, who is in a room, who is offline. Redis history caches the last 75 messages to prevent constantly hitting the database when loading conversation for the first time. Also status for internal status or quick data, like the number of people logged in. Gearman used for async jobs like iOS push and delivering email. AWS West is used for disaster recovery. Everything is replicated to AWS West. Chef is used for all configuration. ElasticSearch has a nice cookbook for Chef. Easy to get started. Like Chef because you can start writing Ruby code instead of using a Puppet style DSL. It also has a nice active community. Acquisition experience. They now have access to core company assets and talent, but Atlassian doesnrsquot mess with what works, we bought you for a reason. Can ask internally, for example, how to scale ElasticSearch and when others in Atlassian need help they can pitch in. Good experience overall. Team structure is flat. Still a small team. Currently have about 18 people. Two people in devops. Developers for platforms, iOS, Android, a few on the server side, and a web development engineer (in France). Capistrano is used to deploy to all boxes. Sensu for monitoring apps. Forgot to monitor a ElasticSearch node for heap space and then hit OOM problems without any notifications. Currently at 75 of heap which is the sweet spot they want. Bamboo is used for continuous integration. Client releases not formal yet, developer driven. Have a staging area for testing. Group flags. Can control which groups get a feature to test features to slowly release features and control load on boxes. Feature flag. Great for protection during the ElasticSearch rollout, for example. If they notice a bug they can turn off a feature and roll back to Couch. Users donrsquot notice a difference. During the transition phase between Couch and ElasticSearch they have applications replicate to both stores. New API version will use Oauth so developers can deploy on their own servers using the HipChat API. Having customers use their own servers is a more scalable model. The Future Will hit two billion messages in a few months and itrsquos estimated ElasticSearch can handle about two billion messages. Not sure how to handle the expected increases in load. Expect to go to Amazon West to get more datacenter availability and possibly put more users in different datacenters. Looking to use AWSrsquos auto scale capabilities. Moving into voice, private 1-1 video, audio chat, basic conferencing. Might use RabbitMQ for messaging in the future. Greater integration with Confluence (a wiki). Use HipChat to talk then use Confluence page to capture details. Therersquos money in them there Enterprise apps . Selling into an Enterprise can be torture. Long sales cycles means it can be hit or miss. But if you hit itrsquos a lucrative relationship. So you may want to consider the Enterprise market. Times are changing. Enterprisersquos may still be stodgy and slow, but they are also adopting new tools and ways of doing things, and therersquos an opportunity there. Privacy is becoming more important and it impacts your stack choices when selling into the Enterprise . HipChat is making an on premise version of their product to satisfy customers who donrsquot trust the public networks or clouds with their data. To a programmer the cloud makes perfect sense as a platform. To an Enterprise the cloud can be evil. What this means is you must make flexible tech stack choices. If you rely 100 on AWS on services it will make it nearly impossible to move your system to another data center. This may not matter for Netflix, but it matters if you want to sell into the Enterprise market. Scale up to get some breathing space . While you are waiting to figure out what you are going to next in your architecture, for very little money you can scale-up and give yourselves a few more months of breathing space. Pick what canrsquot fail . HipChat made never losing user chat history a priority, so their architecture reflects this priority to the point of saving chat to disk and then later reloading when the downed systems recover. Go native . Your customers are on lots of different platforms and a native app would give the best experience. For a startup thatrsquos a lot of resources, too many. So at some point it makes sense to sell to a company with more resources so you can build a better product. Feature and group flags make a better release practice . If you can select which groups see a feature and if you can turn off features in production and test, then you donrsquot have to be so afraid of releasing new builds. Select technologies you feel really confident with . ElasticSearchrsquos ability to expand horizontally to deal with growth helped HipChat feel very confident in their solution. That users would be happy. And thatrsquos a good feeling. Become part of the process flow and you become more valuable and hard to remove . HipChat as a natural meeting point between people and tools is also a natural point to write bots that implement all sorts of useful work flow hacks. This makes HipChat a platform play in the enterprise. It enables features that wouldnrsquot otherwise be buildable. And if you can do that you are hard to get rid of. AWS needs a separate node presence bus . Itrsquos ridiculous that in a cloud, which is a thing in itself, that machine presence information isnrsquot available from an objective third party source. If you look at rack it will have often have a separate presence bus so slots can know if other slots are available. This way you donrsquot have to guess. In the cloud software is using primitive TCP based connection techniques and heartbeats to guess when another node is down, which can lead to split brain problems and data loss on failovers. Itrsquos time to evolve and take huge step towards reliability. Product decision drive stack decisions . HipChat server drives decisions on the tech stack. Redis Cluster can be self-hosted. Amazon DynamoDB wasnrsquot an option because they are launching a hosted service behind the firewall. Throwing horsepower at a problem will only get you so far . You need to capacity plan, even in the cloud. Unless your architecture is completely Cloud Native from the start, any architecture will have load inflection points at which their architecture will no longer be able to handle the load. Look at growth rate. Project out. What will break What will you do about it And donrsquot make the same mistake again. How will HipChat deal with 4 billion messages Thatrsquos not clear. Know the limits of your system . EBS has a 1 TB storage limit, which is a lot, but if your storage is approaching that limit there needs to be a plan. Similarly, if your database, like Couch, uses double the disk space during a compaction phase that will impact your limits. The world will surprise you . Six months ago HipChat thought Redis was going to be the weakest link, but itrsquos still be going strong and it was Couch and EBS that were the weakest link. Related Articles I wonder how they handle the 50 failure rate inherent within redis from a durability perspective. Or perhaps comment on if they saw similar performance. Out of 2000 writes, Redis claimed that 1998 of them completed successfully. However, only 872 of those integers were present in the final set. Redis threw away 56 of the writes it claimed were successful. Alex, there is absolutely not a quot50 failure rate inherent within Redisquot. I39m not sure that you39re grokking that properly. That is specifically in the (hopefully) quite rare quotsplit brainquot problem, and a completely acceptable issue for what they39re using it for (and hopefully for what everyone39s using it for, lightweight job queuing). I happily use Redis for job queuing on API servers and for pickup from Logstash and its failure rate is 0. Further the article specifically mentions that elevation is manual and this situation won39t happen. Even further still, it doesn39t matter a bit, save for load on the backend. Those are caching servers, not mission critical data. This is exactly the scenario where you don39t bother with ACID compliance or phantom writes. Great article. Helpful for sure. I do want to point out though that the last paragraph has some spelling and grammar issues: The world will surprise you. Six months ago HipChat though Redis was going to be the weakest linked, but its still be doing strong and it was Couch and EBS that were the weakest link. very good article but the number 60 is small in comparation with so many servers. May in quotrush hourquot they deliver 600 or 6000
Comments
Post a Comment