Page MenuHomePhabricator

Deploy graphoid service into production
Closed, ResolvedPublic

Description

Time has come to let the baby fly. The graphoid code has been rewritten on top of the service-template-node & service-runner, instrumented for production and needs to be deployed. Once done, it will make graphs available as images, allowing support for non-js browsers, and possibly others.

Expected load - very very low at first.
If we make images the default (instead of client-side rendering), the load may increase significantly once graphs are widely used.

Needed help: any guide or similar service that i can copy/paste.

Event Timeline

Yurik claimed this task.
Yurik raised the priority of this task from to High.
Yurik updated the task description. (Show Details)
Yurik added subscribers: Yurik, GWicke, ori and 2 others.
Yurik set Security to None.

@GWicke - are we at a point yet where someone on your team could help Yuri get this all the way into prod? Obviously lower priority than VE dependencies ... but would still be great to get out the door.

@GWicke - are we at a point yet where someone on your team could help Yuri get this all the way into prod? Obviously lower priority than VE dependencies ... but would still be great to get out the door.

Are the VE dependencies actually done? If nothing else, the code to call RESTbase from VE has not been written yet, so if we have a surplus of engineering resources, it'd be great to get that out the door, too.

@Eloquence: We helped @Yurik over the weekend, but this week we really want to get RESTBase & the VE integration ready so that we can test it thoroughly next week.

sounds good - let's revisit later. yuri - hold your horses for a bit longer :)

@GWicke, thanks for all your help over the weekend, couldn't have implemented the whole service so quickly without it! Could someone provide some starting points for me so I could poke at it myself? Such as: which repo/files contain something similar to what I would need? I would do all the preparatory work to simplify the final review. Thanks!

@Yurik, you can take a look at the restbase Puppet module. It has slightly more things than you need, but should give you an idea & already uses service-runner.

Most of the general service deploy tasks are spelled out in T89901, which is about creating a module to address the recurring parts generically. @ori signalled his intention to look into this as well, so I'm pretty optimistic that we can create something soon.

@akosiaris has started work on this, ETA: end of April

Change 205350 had a related patch set uploaded (by Mobrovac):
WIP: Graphoid: Puppet bits

https://gerrit.wikimedia.org/r/205350

There are a couple of things missing from this ticket. Those are:

  • A clear description of what this service does. Preferably a link to a wiki page

https://www.mediawiki.org/wiki/Extension:Graph seems to be a good start with a section for Graphoid under https://www.mediawiki.org/wiki/Extension:Graph#Graphoid_Service but a dedicated page with some more information would be welcome. Specifically I 'd love:

  • A link to a simplified proposed architecture diagram. Nothing too fancy,
    • just how requests flow from
      1. The browser(end-user) to mediawiki (well the Graph Extension)
      2. The extension to the service (if any)
      3. The browser to the service (if any)
    • Jobs that might need to run via jobrunners (if any)
    • Data store dependencies (if any)
    • Anything architecturally significant I might have missed

The idea is to have a very very clear diagram for everyone to understand at first glance so it can serve as documentation. No intermediate layers like nginx/varnish/restbase or whatever. These can/will probably change at some point in the future, especially if too much info is provided (like which varnish cluster is being used) without updating the diagram making the documentation out of date and less helpful.

  • Who's running point

I am assuming the services team, but I may be wrong and we definitely want to have that documented

Change 205856 had a related patch set uploaded (by Alexandros Kosiaris):
Assign LVS IPs to the graphoid service

https://gerrit.wikimedia.org/r/205856

There are a couple of things missing from this ticket. Those are:

  • A clear description of what this service does. Preferably a link to a wiki page

https://www.mediawiki.org/wiki/Extension:Graph seems to be a good start with a section for Graphoid under https://www.mediawiki.org/wiki/Extension:Graph#Graphoid_Service but a dedicated page with some more information would be welcome. Specifically I 'd love:

  • A link to a simplified proposed architecture diagram. Nothing too fancy,
    • just how requests flow from
      1. The browser(end-user) to mediawiki (well the Graph Extension)
      2. The extension to the service (if any)
      3. The browser to the service (if any)
    • Jobs that might need to run via jobrunners (if any)
    • Data store dependencies (if any)
    • Anything architecturally significant I might have missed

The idea is to have a very very clear diagram for everyone to understand at first glance so it can serve as documentation. No intermediate layers like nginx/varnish/restbase or whatever. These can/will probably change at some point in the future, especially if too much info is provided (like which varnish cluster is being used) without updating the diagram making the documentation out of date and less helpful.

Great idea, @akosiaris! @Yurik, could you see to it? As always, Services can help if you need any.

  • Who's running point

I am assuming the services team, but I may be wrong and we definitely want to have that documented

Actually, it should be @Yurik. The Services team is here only to facilitate the deployment (he's already got +2 on the deploy repo).

>> - Who's running point

I am assuming the services team, but I may be wrong and we definitely want to have that documented

Actually, it should be @Yurik. The Services team is here only to facilitate the deployment (he's already got +2 on the deploy repo).

Good thing I asked then :-)

I will create a doc page with a diagram in the next few days. Please ping for any other info.

Change 205350 abandoned by Mobrovac:
WIP: Graphoid: Puppet bits

Reason:
As per IRC discussion with _joe_, abandoning this change in order to have a complete blueprint for all of the bits needed for service deploy. I will create new patches for graphoid split in three parts.

https://gerrit.wikimedia.org/r/205350

Change 206105 had a related patch set uploaded (by Mobrovac):
Graphoid: service deployment on SCA

https://gerrit.wikimedia.org/r/206105

Change 206106 had a related patch set uploaded (by Mobrovac):
Graphoid: LVS configuration

https://gerrit.wikimedia.org/r/206106

Change 206108 had a related patch set uploaded (by Mobrovac):
Graphoid: Varnish configuration

https://gerrit.wikimedia.org/r/206108

Change 206105 merged by Alexandros Kosiaris:
Graphoid: service deployment on SCA

https://gerrit.wikimedia.org/r/206105

Change 205856 merged by Alexandros Kosiaris:
Assign LVS IPs to the graphoid service

https://gerrit.wikimedia.org/r/205856

Change 206106 merged by Alexandros Kosiaris:
Graphoid: LVS configuration

https://gerrit.wikimedia.org/r/206106

Change 206108 merged by Alexandros Kosiaris:
Graphoid: Varnish configuration

https://gerrit.wikimedia.org/r/206108

The corresponding changes have been merged, @Yurik has updated the wiki page with a architectural diagram, simple tests at
https://graphoid.wikimedia.org/_info/home work, icinga is happy, resolving this. Thanks everyone!