opensource.google.com

Menu

Posts from January 2016

Seesaw: scalable and robust load balancing

Friday, January 29, 2016

Like all good projects, this one started out because we had an itch to scratch…

As Site Reliability Engineers who manage corporate infrastructure at Google, we deal with a large number of internally used services that need to be load balanced for scalability and reliability. In 2012, two different platforms were used to provide load balancing, both of which presented different sets of management and stability challenges. In order to alleviate these issues, our team set about looking for a replacement load balancing platform.

After evaluating a number of platforms, including existing open source projects, we were unable to find one that met all of our needs and decided to set about developing a robust and scalable load balancing platform. The requirements were not exactly complex - we needed the ability to handle traffic for unicast and anycast VIPs, perform load balancing with NAT and DSR (also known as DR), and perform adequate health checks against the backends. Above all we wanted a platform that allowed for ease of management, including automated deployment of configuration changes.

One of the two existing platforms was built upon Linux LVS, which provided the necessary load balancing at the network level. This was known to work successfully and we opted to retain this for the new platform. Several design decisions were made early on in the project — the first of these was to use the Go programming language, since it provided an incredibly powerful way to implement concurrency (goroutines and channels), along with easy interprocess communication (net/rpc). The second was to implement a modular multi-process architecture. The third was to simply abort and terminate a process if we ended up in an unknown state, which would ideally allow for failover and/or self-recovery.

After a period of concentrated development effort, we completed and successfully deployed Seesaw v2 as a replacement for both existing platforms. Overall it allowed us to increase service availability and reduce management overhead. We're pleased to be able to make this platform available to the rest of the world and hope that other enterprises are able to benefit from this project. You can find the code at https://github.com/google/seesaw.

By Joel Sing, Google Site Reliability Engineer

Google Code-in 2015: our biggest year yet!

Monday, January 25, 2016


GCI 2015 logo.jpg


The 6th year of Google Code-in (GCI) came to a close today after an exciting seven week run. Currently, mentors from each of the 14 organizations are busy reviewing final work submitted by students. Each organization will pick two Grand Prize winners to receive a trip to Google’s California headquarters this June where they will meet Google engineers, see exciting product demos and enjoy a fun-filled day of adventure in San Francisco.


We would like to congratulate all of the new and returning students who participated in GCI this year. We are thrilled to have our biggest year yet: over the last seven weeks, 979* students from 65 countries completed 4755* tasks in the contest.


And finally, a HUGE thanks goes out to the heart of our program: the GCI mentors and organization administrators. These volunteers spend countless hours creating and reviewing hundreds of tasks and teaching teens about all facets of open source development (community standards, new and exciting technologies, code reviews, version control systems, IRC and everything in between). We could not run this program without you!

* These numbers will increase over the next couple of days as mentors review the final work submitted by students.

Mary Radomile, Open Source Programs

J2ObjC 1.0 Release

Thursday, January 21, 2016

We are pleased to announce the 1.0 release of J2ObjC, a Google-authored open-source compiler that lets iPhone/iPad applications use Java code. J2ObjC's goal is to support the sharing of an application's non-UI code (such as data access, or application logic) by writing it once in Java, then building it into the iOS application. This same code can be shared with the Android and web versions of the application (the latter using the GWT compiler), as well as with server-side code. J2ObjC is licensed under the Apache License, Version 2.0.
J2ObjC is not a Java emulator, but instead translates Java to Objective-C classes that extend the iOS Foundation Framework. It supports the Java 8 language and runtime required by client-side application developers. JUnit and Mockito test translation and execution is also supported.  J2ObjC can be used with most build tools, including Xcode and Make, and there are Gradle and Maven plug-ins.
J2ObjC does not translate user interfaces, as world-class apps need to have world-class user interfaces that adhere closely to the different iOS and Android design standards. J2ObjC instead focuses on writing common abstractions once, and verifying them with a common set of unit tests. This ensures that an app's features work the same across platforms, improving customer experiences. Teams developing multi-platform apps still need great engineers for each platform, but with J2ObjC they don't waste time rewriting each others' code.


Using continuous integration, J2ObjC helps product velocity. As each feature is added or bug fix made to the application's shared code, all platforms are automatically rebuilt and tested. And because common features are shared across platforms, a bug found on one platform is fixed once for all platforms.


Several of Google’s iOS applications use J2ObjC for these reasons, including Inbox by Gmail, Google Calendar, Google Docs, Google Sheets, Google Slides and Google My Business. Each team has dedicated iOS designers and engineers, but application logic common to all platforms is written once.

By Tom Ball, Google Engineering

Ringing in the new year with Google Code-in

Friday, January 1, 2016

GCI 2015 logo.jpg
Today marks the halfway point of the Google Code-in 2015 (GCI) contest. 690 teenagers from 63 countries have been busy working with 14 open source organizations completing an impressive 2,370 tasks. The number of students successfully completing tasks has already surpassed the total number for all of the 2014 contest!


Tasks that the students have completed include:
  • writing test suites
  • improving mobile UI
  • designing website landing pages
  • writing documentation and creating videos to help new users
  • working on internationalization efforts
  • fixing and finding bugs in the organizations’ software


Over 2700 students from 98 countries and 1800+ schools have registered for the contest. We look forward to seeing more great work from many of these students over the next few weeks. A big welcome to the students from four countries participating for the first time in GCI: Luxembourg, Moldavia, Mongolia and Uganda!  


The countries with the most students completing tasks so far are:
  • India - 194
  • United States - 170
  • Romania - 46
  • Singapore - 36
  • Canada - 21

There is still plenty of time to get involved with Google Code-in to earn digital certificates and a Google Code-in 2015 t-shirt. New tasks are being added daily to the contest site so if you don’t see something that interests you today, check back again every couple of days. Currently over 2,300 tasks are open for students to choose from.


The last day to register for the contest and claim a task is Sunday, January 24, 2016 with all work being due on Monday January 25, 2016 at 9:00 am PT.


Good luck to all of the students participating this year in Google Code-in!

By Stephanie Taylor, Google Code-in Program Manager
.