[katello-devel] Katello Backend Service Relationships and Architecture

Eric Helms ehelms at redhat.com
Thu Dec 13 21:53:06 UTC 2012


On 12/13/2012 03:03 PM, Bryan Kearney wrote:
> On 12/13/2012 05:35 AM, Lukas Zapletal wrote:
>> On Wed, Dec 12, 2012 at 10:19:34PM -0500, Eric Helms wrote:
>>> My intent for creating the diagram and bring to light the various 
>>> implementation details surrounding each service was not to raise the 
>>> ActiveResource debate again or to question the Foreman integration.  
>>> As my diagram showed, Candlepin has connections and touches almost 
>>> every layer as did PulpV1 integration. Rather, my goal is to bring 
>>> up a larger conversation about the Katello architecture as a whole 
>>> going forward.  We are at a point where we are migrating to a 
>>> completely new version of one backend service and re-writing a lot 
>>> of the Katello bits aroun d it (Pulp) and simultaneously integrating 
>>> a brand new backend engine (Foreman).  I am of the opinion, and I 
>>> think based on replies that others echo this, that we should have a 
>>> consistent architecture for the integration of backend services into 
>>> Katello.  No matter what ends up being the choice, consistency is key.
>>>
>>> If there are no other agenda items for the Deep Dive tomorrow, 
>>> perhaps we can take that time to discuss the state of each backend 
>>> service integration wise and how we'd like to achieve consistency 
>>> and a separation of concerns throughout the Katello layers.
>>
>> Speaking about integration, I was collecting items in regard to our
>> orchestration and integration issues for several months now:
>>
>> https://fedorahosted.org/katello/wiki/OrchestrationNG
>>
>> I am not sure if this is topic to raise now (definitely not a deep dive
>> topic), but eventually I would like to talk about it.
>>
>> LZ
>>
> I took a read of the thread, and asked Eric for a quick "talk to me 
> like I am a 2 year old" review. This is what I came away with.
>
> The original glue layer attempted to enforce the following practices:
>
> * The controller layer (/controllers and /controllers/api) should not 
> be aware of the backend engine providing the implementation.
> * Any object which the controller would interact with should live in 
> the model tier (/models), since that is standard rails
> * A glue layer (/model/glue) would enhance the model tier and handle 
> reading/writing to the backend.
> * All transport to the backend systems is external (in /lib/resources)
>
> So, things which go against this pattern in the code base (Master) 
> today include:
>
> A) Controllers calling the glue layer directly (see 
> packages_controller.rb)
> B) Model objects which are backend specific (see /models/candlepin/*, 
> and models/foreman/*)
> C) Model objects not living in /app/models.
> D) App specific namespaces (see controllers/foreman)
>
> Eric, have I understood the main issues correctly? My guess is that 
> (C) would be the larger issue in the current codebase, since it would 
> require a level of abstrction be added into the existing foreman and 
> candlepin paths.
Yep - I think you have nicely summarized the biggest issues around 
architecture inconsistency as they stand in Master.
>
> -- bk
>
>
>
>
>
>
>
> _______________________________________________
> katello-devel mailing list
> katello-devel at redhat.com
> https://www.redhat.com/mailman/listinfo/katello-devel




More information about the katello-devel mailing list