Category: Uncategorized

איכות מעל הכל

בשבועיים האחרונים השתתפו כל העובדים באאוטברין ישראל בפעילות זמן איכות.  זוהי כבר השנה השישית, שבה מחלקת הפיתוח לוקחת נשימה ארוכה מהעשייה השוטפת, שמה בצד את הפיצ’רים, הבאגים וטרדות היומיום, ומתפנה  לזמן איכות.

העיתוי לא מקרי — סוף השנה האזרחית, האמריקאים נחים (אם לעשות שופיניג במינוס 15° נקרא לנוח), הלקוחות בחופשה, ואנחנו בזמן איכות.

 כל מי שעובד 50 שבועות בשנה בשביל לשחרר מוצרים חדשים, לשפר מוצרים קיימים, לפתור בעיות במערכות המבצעיות, לשדרג טכנולוגיות ישנות ולהחליפן בחדשות, להתאים את היישומים והשירותים שלנו לאתגרים החדשים  — יכול להבין עד כמה חשוב לעשות הפוגה, להתרכז ללא הפרעות, ולהקדיש שבועיים לעצמו.

שבועיים מתוך שנה זה נשמע מעט, אבל כשמיקוד הוא שם המשחק — מספיקים המון.

אז מה היה לנו?

בכל שנה אנחנו בוחרים נושא מרכזי, וכל צוות בוחר מהלעשות במסגרת הנושא הכללי. הנה כמה דוגמאות לנושאים בהם עסקנו בזמן האיכות בשנים האחרונות:

* הורדת עלויות — הורדת עלויות של מערכות המחשוב ע”י שיפור היעילות של השירותים. בפעילות זו הצלחנו להוריד בעשרות אחוזים את העלויות של המערכות שמגישות את המלצות של אאוטברין.

* מיזעור הזמן הממוצע לתיקון בעיות ( Mean Time to Repair/MTTR)  — הקטנת הזמן  שלוקח לנו להתגבר על תקלות. בשנה זו שיפרנו את מערכות הניטור וההתראה שלנו בצורה משמעותית, וגם החלפה של מנגנונים שבירים במנגנונים יציבים שיכולים להתמודד עם הגידול של אאוטברין.

* איך לעשות את החיים שלנו (המפתחים) לנוחים יותר — מהנדסים מסתבר הם די עצלנים, במיוחד כשמדובר בביצוע ידני של אותן המשימות שוב ושוב. בשנה זו פיתחנו כלים פנימיים ותשתיות אוטומציה לייעול העבודה שלנו וכך לפנות זמן לדברים חשובים יותר , שיפור המערכת החיסונית שלנו ע”י הגדלת אחוז הכיסוי של הבדיקות האוטומטיות’ “הוצאה לפנסיה מוקדמת” של שירותים שלא בשימוש,  פעילות גיבוש מחוץ למשרד, והקאת’ון של יומיים.

* פריסה מתמשכת (Continuous Deployment) — מעבר משחרור גרסאות  כל מספר שבועות, לפריסה רציפה של קוד (עשרות פעמים ביום) לסביבה המבצעית.

והשנה – השנה זמן האיכות היה בסימן למידה.

מה לומדים ?

היו לנו קורסים מובנים ומקיפים עם מרצים מקצועיים בתחומים מגוונים כמו: AngularJS,  Spark, “מה חדש ב Java 8” ,”איך לכתוב שיפורי ביצועים ל Java“, “הנחיות לבניית חווית משתמש (UX) נכונה

שקט – לומדים !

היו גם לא מעט הרצאות שהועברו על ידי המומחים של אאוטברין כמו: “למד איך להגן על התוכנה, באמצעות Hacking“, “סדנת code retreat“, “עקרונות בתכנות א-סינכרוני“, “HAPproxy – למה ומדוע“, ועוד ועוד.

זה יהיה במבחן ?

 

קינוח

אחרי שבוע וחצי של לימודים שהרגיש קצת כמו קפיצה לאחור בזמן לטכניון / לאוניברסיטה (לתיכון?),  קינחנו בשלושה ימים של הקאת’ון.

גם כאן, כמו בתוכנית ריאליטי טובה, הסוד טמון בפורמט. והפורמט פשוט:

1. מצא נושא שמדליק אותך

2. ארגן צוות מגוון (מי שעובד לבד – עובד קשה)

3. צא לדרך

** אל תאכל ארוחת צהריים גדולה, כדי שישאר מקום לפיצות (בכל הקאת’ון טוב חייבות להיות פיצות)

הזמן היה קצר, העבודה  היתה אינטנסיבית, האווירה מלאת אדרנלין, והחדר — מלא מוצרלה.

צילום אילוסטרציה

הצוותים לקחו את ההקאת’ון ברצינות, והצליחו להרים תוך שלושה ימים, פרויקטים מרשימים ביותר.

בסוף היום השלישי נפגשנו כולנו באולם ההרצאות ולכל צוות ניתנו 5 דקות להציג את הפרויקט שלו.

האקת’ון הוא לא רק לאנשי טכנולוגיה ואחת המטרות היא לאפשר לעבוד עם אנשים שאין לך הזדמנות לעבוד ביומיום: מהנדסים מצוותים אחרים, אנשי שיווק, מוצר ומכירות. כולם לקחו חלק פעיל,  גם כאן’ גיוון הוא שם המשחק.

חלק מהצוותים, בחרו בתחום שקרוב מאוד לתחום שבו הם עוסקים, בעוד שאחרים בחרו לעשות דברים ש(לפחות בינתיים)אין להם קשר לפעילות של אאוטברין.

היו פרויקטים שמטרתם שיפור סביבת העבודה שלנו, והגברת היעילות, היו פרויקטים שיכולים להפוך (עם קצת פוליש ווקס) למוצר של ממש.

דוגמאות ? בבקשה:

* אפלקציה לאיתור עובדים באאוטברין על פי המיומניות שלהם כמו שמופיע בפרופיל שלהם ב Linked-In

* אפליקציה עבור רשת חברתית מבוססת מיקום

* איפה הבוס / איפה העובדים – אפליקציה שמאתרת אנשים בתוך הבניין ומציגה על מפת המשרד איפה הם נמצאים

* מכונת זמן

* ניתוח אלגוריתמי של תכנים ברשת של אאוטברין

* מערכת ניטור גלובלית לשירותי ה IT של אאוטברין

* מערכת לניהול DNS

ועוד ועוד

ועכשיו ?

בסוף השבועיים האלה גילינו שכל מה שהשארנו בצד, המשימות, הפיצ’רים, הבאגים —  לא הלכו לשום מקום, והם חיכו לנו בדיוק במקום שהישארנו אותם. אבל עכשיו, אחרי הקורסים, ההאקת’ון, והפיצות, אנחנו עם מצברים מלאים ומוכנים לחזור לעניינים.

UPDATE #2: Outbrain Security Breach

Earlier today, Outbrain was the victim of a hacking attack by the Syrian Electronic Army. Below is a description of how the attack unfolded to help others protect against similar attempts. Updates will continue to be posted to this blog.

On the evening of August 14th, a phishing email was sent to all employees at Outbrain purporting to be from Outbrain’s CEO. It led to a page asking Outbrain employees to input their credentials to see the information. Once an employee had revealed their information, the hackers were able to infiltrate our email systems and identify other credentials for accessing some of our internal systems.

At 10:23am EST SEA took responsibility for hack of CNN.com, changing a setting through Outbrain’s admin console to label Outbrain recommendations as “Hacked by SEA.

At 10:34am Outbrain internal staff became aware of the breach.

By 10:40am Outbrain network operations began investigating and decided to shut down all serving systems, degrade gracefully and block all external access to the system.

By 11:03am Outbrain finished turning off its service from all sites where we operate.

We are continuing to review all systems before re-initiating service.

UPDATE #1: Outbrain Security Breach

We are aware that Outbrain was hacked earlier today and we took down service as soon as it was apparent.  The breach now seems to be secured and the hackers blocked out, but we are keeping the service down for a little longer until we can be sure it’s safe to turn it back on securely. Please stayed tuned here or to our Twitter feed for updates.

Hurricane Sandy – Outbrain Service updates

Hi all As Hurricane Sandy is about to hit the east coast US, and as Outbrain’s main Datacenter is located in downtown Manhattan, we are taking measures to make as little service interruption as possible for our partners and customers. Outbrain is normally serving from 3 data centers and in case of NY data center loss, we will supply the service from one the other data centers. On this page, below – we will update on any service interruption and ETAs for problem solving. We assume all will go well and we will not have to update but… just in case 🙂

[UPDATE – Nov 3rd 3:45pm EST] – At this time Utility power is back to all our datacenters and HQ office. It is now time to restore the service from NY and get the office back to work. This will take some time but systems will gradually be put back up over the next week or so. There should be no effect on users, publishers or clients.

Our HQ will also start working gradually depending on the availability of public transportation.

We are here closing this reporting post – if you see any issues, please report to am@outbrain.com or your rep.

I hope the storm of the century will be the last one for the next century (at least).

[UPDATE – Nov 1st  9:30am EST] – Our HQ, located on 13th between 5th and 6th in downtown New York City is still without power and therefore closed. Thankfully, our NY-based team is safe and in dry locations, and will continue to try and work as best they can. We highly appreciate the concern and best wishes we received from our partners and clients across the globe; thank you!

We are doing our best to continue to provide the best in class service, one we hope you’ve come to expect from us. As an update, our datacenter in NY is still without power and we expect it to be down for a few more days. We will continue to serve from our other datacenters located in Chicago and Los Angeles. To reiterate, our service did not go down, and we are currently still serving across our client’s sites. As of this morning, we recovered and updated all our reporting capabilities, so we should be back to 100%.

If you are experiencing any difficulties or seeing different, please reach out to your respective contacts. We’ll also continue to operate under emergency mode until Monday, you can reach us 24/7 at am-emergency-support@outbrain.com (am = Account Management).

[UPDATE – Oct 31st 6:46am EST] – Serving still holds strong from our LA and Chicago data centers and we are not aware of any disruption to our service. We are working hard to recover our dashboard reporting capabilities, but it will probably take a couple more days before we’re able to get back to normal mode. Sorry for any inconvenience caused by this. Send us a note to am-emergency-support@outbrain.com if you have any request, and one of us from around the world will respond as soon as possible.

[UPDATE – 6:51pm EST]  – Again, not much to update – All is stable with both LA and Chicago datacenters. It’s the end of the day here in Israel and we are trying to get some rest. Our team mates in the US are keeping an eye on the system and will alert us if there is anything wrong. Good night.

[UPDATE – 3:35am EST] – Actually not much to update about the service. All is pretty much stable. we are safely serving from LA and Chicago. most back-end services are running in LA Datacenter and our tech team in Israel and NY are monitoring and handling issues as they raise. Our Datacenter vendors in NY are working with FDNY to pump the water from the flooded generator room so it will take a while to recover this datacenter 🙂

[UPDATE – 10:50am EST] – The clients dashboard is back up.

[UPDATE – 10am EST] – The clients dashboard on our site is periodically down – we are handling the issues there and will update soon.

[UPDATE – 5am EST] Our NY Data center went down. Our service is fully operational and we are  serving through our Chicago and LA Data centers. If you’re accessing your Outbrain dashboard you may experience some delays in data freshness. We are working to resolve this issue and will continue to update.

[UPDATE – 2am EST] – Our NY Data center went completely off – We are fully serving from our Chicago and LA Data centers. External reports on our site are still down but we are working to fail over all services from the LA Datacenter. – we will follow with updates.

[Update – 12:50am EST] – power just went all off in our NY Datacenter  and provider has evacuated the facility – we are taking our measures to move all functionality to other datacenters.

[UPDATE]  – at 9pm EST]  commercial power went down on our NY Datacenter. Provider failed over to generator and we continue to serve smoothly from this Datacenter. We continue to monitor the service closely and ready to take actions if needed.

How to “Outbrain” Selenium Tests with Ext framework

Many of our internal applications were developed using the Extjs framework.

Extjs Is a very powerful JavaScript framework and one of the most popular javascript user interface open source framework , however when it comes to automated test with selenium the real challenge begin.

It is very difficult to write automated test to Ext application with selenium because Ext generates many <div> and <span> tags with an automatically-generated ID (something like “ext-comp-11xx”). Accessing these tags through Selenium is the big challenge we are trying to solve. We wanted to find a way to get these automatically-generated IDs automatically.
How do we approach this?

Ext has a component manager, where all of the developers’ components are being saved.  We can “ask” the component manager for the component ID by sending it a descriptor of the component. To simplify – we (the selenium server) tell the component manager “I need the ID of the current visible window which, btw, is labeled as ‘campaign editor'”.

This will look something like:


ComponentLocatorFactory  extjsCmpLoc = new ComponentLocatorFactory(selenuim);

Window testWin = new Window(extjsCmpLoc.createLocator(”campaign editor”Xtype.WINDOW));
Then we can to use Ext window method like close -> testWin.close();

Anther Example :

ComponentLocatorFactory  extjsCmpLoc = new ComponentLocatorFactory(selenuim);

Button newButton = new  Button(extjsCmpLoc.createLocator(“Add Campaign”, ExtjsUtils.Xtype.BUTTON));

newButton.click();

 

You can ask for all of the visible components by type, by label or both:

 

TextField flyfromdate = new TextField( extjsCmpLoc.createLocator(ExtjsUtils.Xtype.DATEFIELD, 0));

flyfromdate.setValue(“10/12/2011”);

TextField flytodate = new TextField(extjsCmpLoc.createLocator(ExtjsUtils.Xtype.DATEFIELD1));

flytodate.setValue(“10/31/2011”);

 

Here’s a simple diagram of our solution:

 

link to project in git-hub : https://github.com/simbal/SelenuimExtend

This solution is Open Source. In the meantime, if you have any questions, feel free to contact me directly. Asaf at outbrain dot com.

 

Asaf Levy

Asaf@outbrain.com

Hello Techies!

A lot has been going with technology on outrain in the last year or two and we haven’t had the time to sit and tell it to the world. Well, some of it we share in our Hebrew podcast, Ran have shared some of it in his blog but I felt it  is time to set-up a formal technology blog for Outbrain.

Some of the posts here will be written by myself but I truly hope that most of them will be written by the team members (those that actually do the work :)).

what is it going to be about? Well, that’s easy, Tech stuff like:

  • Software geeks goodies that we do in Outbrain.
  • infrastructures and systems we use and enthusiastic about.
  • we will try to share some of our architectural designs and considerations.
  • Ops/IT stuff, how we choose to do things.
  • our culture and how we work to “Get things done”
  • cool algorithms and how to make them scale.

OK, enough with the build-up, let’s see how much time will it take to write the first tech post.

Enjoy the blog

Ori Lahav

Outbrin CTO