Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 5BD6A200B7E for ; Tue, 23 Aug 2016 01:55:28 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 5A826160ABC; Mon, 22 Aug 2016 23:55:28 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 7C258160AB3 for ; Tue, 23 Aug 2016 01:55:27 +0200 (CEST) Received: (qmail 44210 invoked by uid 500); 22 Aug 2016 23:55:26 -0000 Mailing-List: contact dev-help@zest.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@zest.apache.org Delivered-To: mailing list dev@zest.apache.org Received: (qmail 44194 invoked by uid 99); 22 Aug 2016 23:55:26 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd3-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 22 Aug 2016 23:55:26 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd3-us-west.apache.org (ASF Mail Server at spamd3-us-west.apache.org) with ESMTP id DC765180318 for ; Mon, 22 Aug 2016 23:55:25 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd3-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 1.198 X-Spam-Level: * X-Spam-Status: No, score=1.198 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=2, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_PASS=-0.001] autolearn=disabled Authentication-Results: spamd3-us-west.apache.org (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com Received: from mx1-lw-us.apache.org ([10.40.0.8]) by localhost (spamd3-us-west.apache.org [10.40.0.10]) (amavisd-new, port 10024) with ESMTP id Abh1ufDalDZ7 for ; Mon, 22 Aug 2016 23:55:24 +0000 (UTC) Received: from mail-oi0-f48.google.com (mail-oi0-f48.google.com [209.85.218.48]) by mx1-lw-us.apache.org (ASF Mail Server at mx1-lw-us.apache.org) with ESMTPS id ABF4C5FACE for ; Mon, 22 Aug 2016 23:55:23 +0000 (UTC) Received: by mail-oi0-f48.google.com with SMTP id 4so175133945oih.2 for ; Mon, 22 Aug 2016 16:55:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:reply-to:in-reply-to:references:from:date:message-id :subject:to; bh=3XCpTSab33mR9X59Jbe8Crk38QI3sBC0jH5FySacKlY=; b=drTX8CJE3qVKz5852QZPsgM0z1JEtsEGCOSDIs/2fr3c7V9bqH7k6JVHDav3NcpSJe PMSq/rad3SpsuxieVQ2wYEyWUfwmZF+jN+vqQyEGLqyjBDWNZXTE41g4j+En+MLaAPtB Ss3uy04JbmZmMT/WtoGhtMRLDzwHyvTiyatoVPjQV5TkeVlbZOHwWC/xuoE7kj+9wxaf S2zK7ERUtIUbHEVfNiQlUM3qy7AyklVGGWDdFATH/ygv6NOfsZz4Z6n+Y10bEGzeS1Ty SpK11zBN87kwWcnNVNro35gs2RxPQww1Z8Tqwc9HvQu9wl22dkBMOckBiDxd/JuN4FB/ 8Mwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:reply-to:in-reply-to:references :from:date:message-id:subject:to; bh=3XCpTSab33mR9X59Jbe8Crk38QI3sBC0jH5FySacKlY=; b=St9+ITgXl0LUghhHzq+26hsDzx8b+wsxlPbk2y+djQrS+u+mnzNufRID9uUad6y5YR jRWFw05uSkNYg+9F+cMvC6pzvcKO6crkYZkO6mh3d3SN3RYEbrhfeYM6y6GgzPMRs27W F7dZ/OtJGBrT/4ZRalgB3RsXN/RxLYbXliEWvPwaTHTniz+Td0cFjcRAqPt7IHQm2PFd eVo2zJ+7bQZ02gdegEgtD0EYY8JeAIXFiZrqxbEYT9bQDIgshL47MEgo5H9J8jM9P4to Z2KHAF5eWB6OiPk6z80nTo2XTmpxw91vuv6rAuq/pqP+2QtcJdSNtNFOXnRIlzIs393r ZCNA== X-Gm-Message-State: AEkoous5mFQIv6esvQpp3Uang06lkm9nCrjB8/ij9RXQpOClxvqPsTcaYYFNno2nGqfC5ay9N0GAnRjpd38jYw== X-Received: by 10.157.17.184 with SMTP id v53mr15168320otf.196.1471910122742; Mon, 22 Aug 2016 16:55:22 -0700 (PDT) MIME-Version: 1.0 Received: by 10.202.51.136 with HTTP; Mon, 22 Aug 2016 16:55:21 -0700 (PDT) Received: by 10.202.51.136 with HTTP; Mon, 22 Aug 2016 16:55:21 -0700 (PDT) Reply-To: niclas@hedhman.org In-Reply-To: References: From: Niclas Hedhman Date: Tue, 23 Aug 2016 07:55:21 +0800 Message-ID: Subject: Re: Spring To: dev Content-Type: multipart/alternative; boundary=94eb2c192a3601ee99053ab1c809 archived-at: Mon, 22 Aug 2016 23:55:28 -0000 --94eb2c192a3601ee99053ab1c809 Content-Type: text/plain; charset=UTF-8 Nemeth, Welcome to the world of Zest. There is a lot of goodies in your mail, and I agree with a lot of what you said. As for Configuration, what Zest provides out if the box is; 1. Configuration is an Entity that can be stored, and modified in runtime. 2. If no Entity is found in the Entity Store (for config), it tries to create one from a properties file (your sensible defaults). 3. Services are expected to do refresh() on the Configuration composite, which will reload. 4. Since implementing an entity store is relatively easy, we are only lacking particular implementations. Finally, there is no "chaining" of stores, which could be used for override mechanism. So, relatively little effort is needed in your first item. :-) For auto-configure, I am not sure what you are trying to say. Perhaps you are only expressing a need that is more or less already fulfilled with the ConfigurationComposite functionality in Zest. But at "clouding tools" I think you are bringing up new functionality in Core.... Currently, the @Service fulfilment is done inside the Zest Core, but perhaps that should be broken out as an SPI (even for the current default). If we follow the normal way to define an SPI, it would simply be a Service that implements something like ServiceProvider interface, but then the question is, how is that service being provided for, so a bit of chicken-egg problem, but probably doable with a fallback implementation. The services abstraction already support another highly needed feature in remote service scenarios, Availability. What we should add for that is CAP-theorem declaration, which would match the need of the client with the capability of the service. And finally, "asynchronous" is a big thing in modern systems, so perhaps a new type of abstraction is needed for asynchronous request/response pattern of services. That is probably a large new feature that should be discussed separately... Cheers Niclas On Aug 22, 2016 15:26, "Nemeth Sandor" wrote: > Hello Niclas, > > I would say that Zest do not fit into the Spring world, I think the > conceptual gap between the two worlds are way too big. I mean Zest doesn't > support e.g. POJOs, also provides a different dependency-injection method. > One could probably force a Spring+Zest combination to work, but it would > never be a perfect match. > > However from my POV it should be possible for Zest to offer the same > convenience-level, along with the tooling support. > This would have 3 different aspects: > > 1) configuration management > 2) auto-configuration support > 3) Cloud tooling > > Below a description follows, although I am not _that_ familiar with the > Zest internals at the moment, so please correct me if I am wrong at any > point. > > The *configuration management* would include providing a concept of > configuration override with an ordering, supporting external key-value > stores for loading configuration (with reload support). I would propose the > following order: > > - External K/V store (etcd, Consul, Spring Cloud Config Server, etc) > - Environment variables > - External configuration files (outside of the application) > - Internal configuration files (packaged with the application) > > The *auto-configuration* support is a bit tricky from my perspective, > because usually one wants to provide default settings which make sense, but > provide an override capability. I could imagine having something like an > _AutoConfiguringApplicationAssembler_ which auto-discovers and assembles > an > application (using Java SPI) but then the user could override it in the > _assemble_ method. > > For the *cloud tooling* Zest could provide a unified service-discovery > support for different service-discovery providers, and then provide support > for different service discovery and load-balancing methods (e.g client-side > load balancing or 3rd party API gateway). > > Best regards, > Sandor > > On Wed, 17 Aug 2016 at 03:01 Niclas Hedhman wrote: > > > Those who know me well, are well-aware of my generally negative opinion > > about Spring framework, as it has created more mess in software than what > > is reasonable for such a framework. > > > > BUT, I am not stuck about it, and I want to highlight something that > looks > > really, really cool.... http://start.spring.io > > > > Also take a look at a frantic presentation by Josh Long about it; > > https://www.youtube.com/watch?v=sOP3x6ODQWQ > > > > With that in your minds, How does Zest fit into that world? > > > > Cheers > > Niclas > > > --94eb2c192a3601ee99053ab1c809--