Hi Nikolay, Thanks for your feedback! Absolutely, the IEP is currently in the draft mode - we will be adding more details going forward. Also, Petr mentioned that he wants to create a prototype which I think will make things clearer for all of us.
As for "download jars from the Internet on a production server", that's not necessarily what we propose. In case of Maven, artifacts are downloaded from a specified repository, which doesn't have to be on the Internet. Companies that have security concerns typically have a mirror/proxy containing approved artifacts only, already checked for viruses, etc. Production servers use the proxy rather than public repositories. The concerns that you brought up are certainly valid. However, I believe that using Maven actually addresses them, because Maven (as any other package/dependency manager for that matter) provides the corresponding functionality out of the box. On the contrary, users who currently download our ZIP package are *forced* to download modules and dependencies that they do not even need and will not use. In my experience, this is actually a bigger source of concern. Anyway, let us add more details to the IEP, and we will go from there. P.S. I'm also not sure I agree with your assessment of the embedded mode and thick clients, but that's probably a different discussion. Please feel free to create a new thread if you would like to discuss this. -Val On Sat, Aug 29, 2020 at 1:46 AM Nikolay Izhikov <nizhi...@apache.org> wrote: > Also, guys. > > Can we make one step back and add some requirements to the IEP. > How we want to install and upgrade Ignite? > What specific issues we want to solve? > > With this input we can be on the same page during solution discussion. > > > 29 авг. 2020 г., в 11:41, Nikolay Izhikov <nizhikov....@gmail.com> > написал(а): > > > > Hello, Val. > > > > Sorry, but I sill don’t understand how «download jars from the internet > on production server» approach helps us to solve the issues you describe. > > > > Moreover, with this enhancement you want to add more dependencies to > Ignite and create some security vulnerabilities: > > * Maven tool - new dependency. I doubt that and of the production > server have it > > * Internet maven repository - many production servers restrict > outgoing internet connection to any addresses. > > It’s hard to understand why distributed DB should have the > ability to connect to some kind of address on the Internet. > > * All Ignite distributions can be compromised with the hack of > some random maven repo or with the malicious proxy. > > * Note, that Ignite installation or upgrade procedure can become > dead just because of some Maven repo down. > > > > > > I have 2 concerns: > > > > 1. We shouldn’t download any jars from the internet during production > deployment or upgrade procedure. > > 2. The IEP description, for now, is quite small for such important > things as a way we distribute and upgrade Ignite. > > Petr, can you, please, make IEP more specific. > > I think we should add the following details: > > * Description of the typical Ignite deployment procedure > including folder structure(config, persistence, .m2 and other folders) > > * This also should include examples of the bash > commands if any required. > > * Description of the typical upgrade(downgrade?) procedure > > * This also should include examples of the bash > commands if any required. > > * Description of «single tool responsible for all > operations». > > * all commands > > * all operations > > * all parameters > > > >> 1. Most paths are resolved relative to IGNITE_HOME, which effectively > forces (or at least motivates) users to put everything related to Ignite > under IGNITE_HOME (configs, additional JARs, etc.). > > > > AFAIU this issue doesn’t relate to the way Ignite distributed. > > We can and should fix this outside of this IEP. > > > >> 2. Modules are enabled/disabled manually by moving folders around… this > is error-prone, > > > > Makes sense. > > Let’s fix this without «download jar from the internet»? > > We can have some kind of config with the enabled modules. > > > >> 3. Standalone nodes use JARs prepackaged in the ZIP file. However, if > you look at how this ZIP is built, you will notice that we don't actually > include all transitive dependencies, > > > > We need to fix this. > > Let’s include all the required JARs to the distribution. > > > >> which means that an embedded node that uses Maven can have a different > classpath. > > > > Embedded Ignite node is an error-prone design decision in the first > place. > > We can’t fix it with the «download jars from the internet» approach. > > We should eliminate the client node as a thing and use a thin clients > instead of it. > > > >> 4. ignite.sh allows manual modifications (there are several "Uncomment > this to..." lines). This complicates upgrades as well. > > > > Makes sense. > > Let’s fix this. > > > >> The whole purpose of the IEP is to fix the above, automate and simplify > operations for the users. The general idea is to create a single tool > responsible for all those operations and use Maven under the hood to > include/exclude modules. > > > > For now, IEP lacks the description of this tool. > > > >> 28 авг. 2020 г., в 22:35, Valentin Kulichenko < > valentin.kuliche...@gmail.com> написал(а): > >> > >> Hi Nikolay, > >> > >> Here are some of the issues that I see with the current binary ZIP > package > >> that we create for every release. > >> > >> 1. Most paths are resolved relative to IGNITE_HOME, which effectively > >> forces (or at least motivates) users to put everything related to Ignite > >> under IGNITE_HOME (configs, additional JARs, etc.). Now, when a user > >> downloads and unzips a new version, they have to somehow merge the > content > >> together - that's poor upgradability. > >> 2. Modules are enabled/disabled manually by moving folders around. Not > only > >> this is error-prone, but it also adds more issues to upgradability - you > >> have to apply these steps for every version you download. > >> 3. Standalone nodes use JARs prepackaged in the ZIP file. However, if > you > >> look at how this ZIP is built, you will notice that we don't actually > >> include all transitive dependencies, which means that an embedded node > that > >> uses Maven can have a different classpath. It seems that we've been > lucky > >> so far as this hasn't caused any issues, but I still think the approach > is > >> wrong. The behavior should be consistent. > >> 4. ignite.sh allows manual modifications (there are several "Uncomment > this > >> to..." lines). This complicates upgrades as well. > >> > >> The whole purpose of the IEP is to fix the above, automate and > >> simplify operations for the users. The general idea is to create a > single > >> tool responsible for all those operations and use Maven under the hood > to > >> include/exclude modules. > >> > >> Exact commands and steps are still under discussion though. It looks > like > >> Petr is going to create a prototype that can be used as a starting > point, > >> but if you have any suggestions or ideas in the meantime, please share > them > >> with us. > >> > >> -Val > >> > >> On Fri, Aug 28, 2020 at 12:31 AM Nikolay Izhikov <nizhi...@apache.org> > >> wrote: > >> > >>> Hello, Igniters. > >>> > >>> Not sure if I understand the essence of the proposal at the moment. > >>> Can you, please, describe the advantages of the proposed way from the > user > >>> perspective? > >>> > >>> How the typical DevOps pipeline should look like with this enhancement? > >>> > >>> How I as a user can create a fully functional installation package of > the > >>> Ignite? > >>> AFAIK downloading some artifacts from the internet straight to the > >>> production server is a security anti-pattern. > >>> > >>> > >>>> 28 авг. 2020 г., в 01:59, Denis Magda <dma...@apache.org> написал(а): > >>>> > >>>> Petr, thanks, > >>>> > >>>> There is also a collection of modules located in our extensions > >>> repository: > >>>> https://github.com/apache/ignite-extensions > >>>> > >>>> @Saikat Maitra <saikat.mai...@gmail.com> is migrating all our > existing > >>>> integrations to that repository and, once this is done, the extensions > >>> will > >>>> be released to Maven separately. Is it reasonable to expand the scope > of > >>>> the IEP-52 and contemplate on how to install those extensions? > >>>> > >>>> - > >>>> Denis > >>>> > >>>> > >>>> On Thu, Aug 27, 2020 at 3:40 PM Valentin Kulichenko < > >>>> valentin.kuliche...@gmail.com> wrote: > >>>> > >>>>> Hi Petr, > >>>>> > >>>>> The proposal makes sense to me - thanks for starting the discussion. > >>>>> Current installation and upgrade procedures involve a lot of manual > >>> steps > >>>>> and quite error-prone, we need to automate and simplify them as much > as > >>>>> possible. > >>>>> > >>>>> I believe we eventually should end up with a unified command-line > tool > >>>>> (ignitectl?) that will incorporate all the operations (enable/disable > >>>>> modules, start/stop, configuration updates, activation, baseline, > etc.). > >>>>> This IEP is a step in this direction. > >>>>> > >>>>> Looking forward to testing a prototype :) > >>>>> > >>>>> -Val > >>>>> > >>>>> On Thu, Aug 27, 2020 at 2:17 AM Petr Ivanov <mr.wei...@gmail.com> > >>> wrote: > >>>>> > >>>>>> Hi, Igniters! > >>>>>> > >>>>>> > >>>>>> For Apache Ignite 3.0 I would like to propose vision of enhanced > >>> delivery > >>>>>> and upgrade processes [1]. > >>>>>> The key idea is to make main binary as slim as possible (delivering > >>> every > >>>>>> optional component by demand only) while providing way to run each > new > >>>>>> version seamlessly without much of the efforts migrating data and > >>>>>> configuration between upgrades. > >>>>>> > >>>>>> I plan to create prototype based on current release of Apache Ignite > >>>>>> (2.8.1 or 2.9.0 if it will be released soon) later in September. > >>>>>> > >>>>>> > >>>>>> > >>>>>> [1] > >>>>>> > >>>>> > >>> > https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=158873958 > >>>>>> > >>>>>> > >>>>> > >>> > >>> > > > >