Uygulama yapılandırmamı nereye koymalıyım?


17

Son zamanlarda " Çevreye bağlı özellikler nerede depolanmalı? " Hakkında bir tartışma okudum .

Klasik yol, tek tek ortama ve bir ortam değişkenine (DEV, PROD ...) dayalı olarak birden fazla özellik dosyasına sahip olmaktır, uygulamayı başlatırken bunları nerede okuyacağınızı seçersiniz (Bahar profillerinde olduğu gibi).

Diğer yandan, uygulamanızı dağıtmak için bir kap kullanıyorsanız, bu tür yapılandırmanın ortamın kendisinden gelmesi gerektiği söylenir (uygulamanın okuduğu ortam değişkenlerini kullanarak), böylece görüntü ortamlar arasında değişmez.

Her yaklaşımın artıları ve eksileri nelerdir? Kap senaryosu için "en iyi" yaklaşım var mı?


Bir dosyayı seçmek için kendinizi bir ortam değişkenine dayandırmanıza neden olan şey, ortam değişkeni kullanmaya uygun değildir, bu nedenle görüntü değişmez? (ana dezavantajı dev ve qa kaplarda eşya kimlik bilgilerini her şeyden daha fazla
bırakmaktır

Yanıtlar:


6

Kim özellikleri dosya ve ortam değişkenleri karşılıklı münasebet

" Uygulama yapılandırmamı nerede saklayabilirim ?" Arasında bir ayrım yapılır. Ve "nerede, uygulamanın ne kaynak bu yapılandırma nedir?"

En olası sonuç herkesin muhtemelen gerektiğini sadece onlar gibi yapılandırma dosyaları ile ne yaptığını yapmaya devam depolama mekanizması (uzun vadeli, çevre var uzun olduğunca için kalıcı durumunu düşünün).

Ancak, bu yapılandırma dosyasını uygulama bağlamına bırakmak ve uygulamanın çalışmasına izin vermek yerine, bu değişkenlerin başladığında çevrede zaten kullanılabilir olmasını beklemelidir.

Bu, iki dağıtım iş akışına sahip olmanız gerektiği anlamına gelir -

  1. Ben X değişiklik kontrol sürecinden geçerek ve Z aracı ile Y değerlendirmeleri yaparak bir ortamda olabilir uygulama dağıtmak, ne olursa olsun.
  2. Değişiklik kontrol sürecinden geçerek ve C aracı, aynı süreç, farklı sonuçlarla B incelemeleri yaparak çevre yapılandırmamı bir ortama dağıtırım.

Konsül gibi bir araçta ortam değişkenlerini yönetme örneğini kullanmak için, git'te yapılandırma dosyalarını saklıyorsanız, gitme sırasında bu yapılandırmayı ortama almak için git2consul gibi araçlar kullanılır.

Yapılandırma dosyası olarak yapılandırılmayı bekleyen bir uygulamanız varsa, yapılandırma dosyasını birden fazla kopyasını uygulamayla göndermekten kaçınabilirsiniz. konso değerleri bir dosyaya geri döner.


0

 Bunu yapmanın yolu, çalışan her uygulama için 3 adet (veya eser) olması.

  1. Geliştirdiğimiz uygulama. Bu, ortamdan bağımsız olarak aynıdır. Örneğinize uyması için bu bir kavanoz / savaş olarak Bahar uygulaması olacaktır.
  2. Uygulamayı çalıştıracak kapsayıcı. Bu, ortamdan bağımsız olarak aynıdır. Spring Boot kullanıyorsanız, artık Tomcat'e ve sadece Java çalışma zamanına ihtiyacınız yoktur. Bu yüzden openjdk Docker kapsayıcısını kullanın.
  3. Uygulamanın ihtiyaç duyduğu yapılandırma. Ortamlar arasında farklı olan tek şey budur. Bir Bahar uygulamasında, muhtemelen bir özellikler dosyası kullanacaksınız.

Yapılandırma dosyası ayrı bir kaynak denetiminde yaşar. Bu eskiden Git'ti, ancak şimdi http://www.configapp.com adresinde Config adlı bir SaaS kullanıyoruz . Config'in temel özelliği, ortama özgü konfigürasyonun kolay kullanımıdır. Uygulamamızı yeni bir sunucuda çalıştırmak için Docker kapsayıcısını, uygulama yapısını ve o ortamın yapılandırma dosyasını çekiyoruz. Kapsayıcıda, kapsayıcı çalışmasının bir parçası olarak uygulamanın ve yapılandırma dosyasının depolandığı dizini bağlarız. Uygulamamız aynı. Konteyner / imajımız aynı. Yalnızca yapılandırma dosyası farklıdır.

Konfigürasyon dosyası ve ortam değişkenleri hakkında. En uzun zamandır yapılandırma dosyalarını kullanıyorduk. PaaS / cloud kullandığımızda, ortam değişkenleri kullandık. Çok fazla yapılandırmanız varsa ekstra işti, bu yüzden doğru yapılandırma dosyasını belirlemek için ortam değişkenlerini kullandık. Özellikleri ortam değişkenlerine dönüştüren bir uygulamamız var, ancak bu atipik. Bir şirket merkezi yapılandırma sunucusunu onayladıysa, bunu kullanırız, aksi takdirde yapılandırma dosyalarının sadeliğini seviyoruz.

Özetlemek gerekirse, app.jar, app.properties, openjdk Docker'ı çekiyoruz. Sonra app.jar ve app.properties konumlarını birleştirerek openjdk Docker'ı çalıştırıyoruz. Ortama özgü tek şey app.properties. Kaç özellik anahtarı, ortam, küme / bölge örneğine bakılmaksızın app.properties'i kolayca yönetmek için Config kullanırız.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.