FYI, a conversation around self-service is starting up which touches on 
configuration.  There is some discussion around separating out each service 
configuration change so that service updates can be made individually without 
impact or dependence on others.   I think this ties into the conversation 
below.  Do you guys have a page started on this anywhere discussing config 
managent?

https://cwiki.apache.org/confluence/display/TC/Self-Service

Ryan M | 303-524-5099

-----Original Message-----
From: Gelinas, Derek [mailto:[email protected]] 
Sent: Monday, April 10, 2017 7:45 PM
To: [email protected]
Subject: Re: Proposal for CDN definition file based configuration management

Thanks Rob. To your point about scalability: I think that this is more 
scaleable than the current crconfig implementation due to the caching. However 
that is a very valid point and one that has been considered. I've started 
looking into the problem from that angle and hope to have some more solid data 
soon.  I still believe that this is ultimately more scaleable than current 
config implementation, even with the scope caching, but the proof will be in 
the data. 

Derek

> On Apr 10, 2017, at 9:23 PM, Robert Butts <[email protected]> wrote:
> 
> I'd propose:
> * Instead of storing the JSON as blob, use 
> https://www.postgresql.org/doc s/9.2/static/datatype-json.html
> * Instead of version-then-file request, use a "latest" endpoint with 
> `If-Modified-Since` (https://tools.ietf.org/html/rfc7232#section-3.3). 
> We can also serve each version at endpoints, but `If-Modified-Since` 
> lets us determine whether there's a new snapshot and get it in a 
> single request, both efficiently and using a standard. (We should do 
> the same for the CRConfig).
> 
> Also for cache-side config generation, consider
> https://github.com/apache/incubator-trafficcontrol/pull/151 . It's a 
> prototype and needs work to bring it to production, but the basic 
> functionality is there. Go is safer and faster to develop than Perl, 
> and this is already encapsulated in a library, with both CLI and HTTP 
> microservice examples. I'm certainly willing to help bring it to production.
> 
> 
> "a single definition file for each CDN which will contain all the 
> information required for any server within that CDN to generate its 
> own configs"
> 
> Also, long-term, that doesn't scale, nor does the CRConfig. As Traffic 
> Control is deployed with larger and larger CDNs, the CRConfig grows 
> uncontrollably. It's already 5-7mb for us, which takes an 
> approaching-unreasonable amount of time for Traffic Monitor and Router 
> to fetch. This isn't an immediate concern, but long-term, we need to 
> develop a scalable solution, something that says "only give me the 
> data modified since this timestamp".
> 
> Again, this isn't an immediate crisis. I only mention it now because, 
> if a scalable solution is about the same amount of work, now sounds 
> like a good time. If it's relevantly more work, no worries.
> 
> 
> But otherwise, +1. We've long needed to Separate our Concerns of 
> Traffic Ops and the cache application.
> 
> 
> On Mon, Apr 10, 2017 at 5:05 PM, Gelinas, Derek 
> <[email protected]>
> wrote:
> 
>> I would like to propose a new method for ATS config file generation, 
>> in which a single definition file for each CDN which will contain all 
>> the information required for any server within that CDN to generate 
>> its own configs, rather than requesting them from traffic ops.  This 
>> would be a version-controlled json file that, when generated, would 
>> be stored in a new table in the traffic ops database as a blob type.  
>> This will satisfy high-availability requirements and allow several 
>> versions of the configuration to be retained for rollback, as well as 
>> "freezing" the config at that moment in time.  Combined with cache 
>> support coming in 2.1, this file would only need be generated once per 
>> traffic ops server instance.
>> Instead of queueing servers to update their configurations, the 
>> configuration would be snapshotted similar to the crconfig file and 
>> downloaded by each cache according to their set interval checks - 
>> rather than performing a syncds and checking that the server has been 
>> queued for update, the version number would simply be checked and 
>> compared against the currently active version on the cache itself.  
>> Should a difference be found the server would request the definition 
>> file and begin generating configuration files for itself using the data in 
>> the definition file.
>> 
>> I would like feedback from the community regarding this proposal, and 
>> any suggestions or comments you may have.
>> 
>> Thanks!
>> Derek
>> 
>> Derek Gelinas
>> IPCDN Engineering
>> [email protected]<mailto:[email protected]
>> m>
>> 603.812.5379
>> 
>> 

Reply via email to