Java-buildpack: μžλ™ μž¬κ΅¬μ„± λΉ„ν™œμ„±ν™” 지원

에 λ§Œλ“  2014λ…„ 08μ›” 04일  Β·  10μ½”λ©˜νŠΈ  Β·  좜처: cloudfoundry/java-buildpack

CFκ°€ λ‚΄ Java μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μž¬κ΅¬μ„±ν•˜λŠ” 것을 μ›ν•˜μ§€ μ•Šμ§€λ§Œ autoconfigure: false μ˜΅μ…˜μ€ λ§€λ‹ˆνŽ˜μŠ€νŠΈμ—μ„œ μ‘΄μ€‘λ˜μ§€ μ•ŠλŠ” κ²ƒμœΌλ‘œ 보이며 Maven ν”ŒλŸ¬κ·ΈμΈμ—λŠ” 이λ₯Ό λΉ„ν™œμ„±ν™”ν•˜λŠ” μ˜΅μ…˜μ΄ μ—†μŠ΅λ‹ˆλ‹€. 이 μ˜΅μ…˜μ€ λ‹€λ₯Έ μ–Έμ–΄(예: Ruby)용 λΉŒλ“œνŒ©μ—μ„œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

μ•ˆλ…•ν•˜μ„Έμš”, 예, 이제 κ°€λŠ₯ν•©λ‹ˆλ‹€.
이제 ꡬ성 νŒŒμΌμ„ 직접 λ³€κ²½ν•˜κΈ° μœ„ν•΄ λΉŒλ“œνŒ©μ„ λΆ„κΈ°ν•˜λŠ” λŒ€μ‹  ν™˜κ²½ λ³€μˆ˜λ₯Ό 톡해 λͺ¨λ“  ꡬ성을 μ„€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ μžλ™ μž¬κ΅¬μ„±μ„ λΉ„ν™œμ„±ν™”ν•˜λ €λ©΄ 이와 같은 ν™˜κ²½ λ³€μˆ˜λ₯Ό μ„€μ •ν•΄μ•Ό ν•©λ‹ˆλ‹€.

cf set-env myapp JBP_CONFIG_SPRING_AUTO_RECONFIGURATION '[enabled: false]'

μžμ„Έν•œ μ •λ³΄λŠ” https://github.com/cloudfoundry/java-buildpack#configuration -and-extension λ¬Έμ„œμ—

λͺ¨λ“  10 λŒ“κΈ€

μ–΄λ–€ μž¬κ΅¬μ„±μ„ ν”Όν•˜λ €κ³  ν•©λ‹ˆκΉŒ? μ‹€μ œλ‘œ Spring μžλ™ μž¬κ΅¬μ„± JAR은 클래슀 κ²½λ‘œμ— λ°°μΉ˜λ˜μ§€λ§Œ μ‹€μ œλ‘œ μžλ™ μž¬κ΅¬μ„±μ„ μˆ˜ν–‰ν•˜μ§€ μ•Šμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. μžλ™ μž¬κ΅¬μ„±μ€ μž¬κ΅¬μ„± 후보인 μ„œλΉ„μŠ€ _및 μž¬κ΅¬μ„± 후보인 Bean이 _λͺ¨λ‘_ μ‘΄μž¬ν•  λ•Œλ§Œ λ°œμƒν•©λ‹ˆλ‹€. λ”°λΌμ„œ μžλ™ μž¬κ΅¬μ„±μ„ μ›ν•˜μ§€ μ•ŠλŠ” μ„œλΉ„μŠ€λ₯Ό λ°”μΈλ”©ν•˜μ§€ μ•ŠμŒμœΌλ‘œμ¨ μžλ™ μž¬κ΅¬μ„±μ„ ν”Όν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ spring-cloud 빈이 μ •μ˜λ˜μ–΄ 있으면 μžλ™ μž¬κ΅¬μ„±μ΄ μ™„μ „νžˆ λ°©μ§€λ©λ‹ˆλ‹€.

νŠΉλ³„νžˆ μš”κ΅¬ν•˜μ§€ μ•Šμ€ λ§ˆλ²•μ€ ν”Όν•˜κ³  μ‹Άλ‹€. μ‚¬μš©μž 제곡 μ„œλΉ„μŠ€λ₯Ό μ •ν™•ν•˜κ²Œ λΆ„μ„ν•˜λŠ”μ§€ μ—¬λΆ€λ₯Ό ν¬ν•¨ν•˜μ—¬ μžλ™ μž¬κ΅¬μ„±μ΄ μ„œλ²„ μΈ‘μ—μ„œ μˆ˜ν–‰ν•  수 μžˆλŠ” μž‘μ—…μ„ 디버깅할 수 μžˆλŠ” 방법이 μ—†μŠ΅λ‹ˆλ‹€. μΆ”κ°€ μ½”λ“œλ³΄λ‹€ 쑰금 더 λ§Žμ€ μΊμ‹œ λ˜λŠ” 무엇이든 λ“œλžλ¦Ώ λ©”λͺ¨λ¦¬λ₯Ό ν™•λ³΄ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€. ν•„μš”ν•˜μ§€ μ•Šκ³  μ›ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ˜ν•œ μžλ™ μž¬κ΅¬μ„±μ€ 거의 μ™„μ „νžˆ λ¬Έμ„œν™”λ˜μ§€ μ•Šμ•˜μœΌλ―€λ‘œ(적어도 찾을 수 있음) μ‹€μš©μ μΈ 문제둜 μ˜ˆμΈ‘ν•  수 μ—†μŠ΅λ‹ˆλ‹€.

@chrylis @nebhale 이 spring-cloud(λ˜λŠ” vcap-java) 기반 bean을 λ³Ό λ•Œ μžλ™ μž¬κ΅¬μ„±μ΄ κΊΌμ§€λŠ” 것에 λŒ€ν•΄ μ–ΈκΈ‰ν•œ λ§ˆμ§€λ§‰ μš”μ μ€ 앱이 μ„œλΉ„μŠ€λ₯Ό 맀우 ꡬ체적으둜 κ΅¬μ„±ν•˜λ €λŠ” 상황을 μ²˜λ¦¬ν•΄μ•Ό ν•©λ‹ˆλ‹€. spring-cloudλ₯Ό μ‚¬μš©ν•œλ‹€κ³  κ°€μ •ν•˜λ©΄ μžλ™ μž¬κ΅¬μ„±μ΄ 앱을 λ°©ν•΄ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μžλ™ μž¬κ΅¬μ„±λ„ λˆˆμ— λ„λŠ” μ–‘μ˜ λ©”λͺ¨λ¦¬λ₯Ό μ†ŒλΉ„ν•˜μ§€ μ•Šμ„ 것이라고 μƒκ°ν•©λ‹ˆλ‹€.

즉, v1μ—μ„œ μžλ™ μž¬κ΅¬μ„±μ„ ν•΄μ œν•˜λ„λ‘ μ œκ³΅ν–ˆμŠ΅λ‹ˆλ‹€(https://spring.io/blog/2011/11/04/using-cloud-foundry-services-with-spring-part-2 μ°Έμ‘°). -μžλ™ μž¬κ΅¬μ„±). μ§€κΈˆμ€ λΉŒλ“œνŒ©μ„ ν¬ν¬ν•˜κ³  ν•„μš”μ— 맞게 μˆ˜μ •ν•˜λŠ” 큰 λ§μΉ˜κ°€ μžˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ μ΄λŸ¬ν•œ μ „ν™˜μ΄ Java λΉŒλ“œνŒ© μžμ²΄μ—μ„œ μ—¬μ „νžˆ 보μž₯λ˜λŠ”μ§€ 여뢀에 관계없이

ν˜„μž¬λ‘œμ„œλŠ” μžλ™ μž¬κ΅¬μ„±μ΄ 맀우 예츑 κ°€λŠ₯ν•œ μƒν™©μ—μ„œλ§Œ μž‘λ™ν•¨μœΌλ‘œμ¨ μ μ ˆν•˜κ²Œ μž‘λ™ν•œλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. λ‚˜λŠ” 이것이 그것을 λΉ„ν™œμ„±ν™”ν•˜λŠ” 방법을 μš”μ²­ν•˜λŠ” 첫 번째 λ¬Έμ œλΌλŠ” 사싀에 κ·Όκ±°ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 이와 μœ μ‚¬ν•œ μš”μ²­μ΄ 많이 λ°œμƒν•˜λ©΄ 이 μž…μž₯을 μž¬κ³ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μžλ™ μž¬κ΅¬μ„±μ΄ μ˜€μž‘λ™ν•˜κ³  μ œλŒ€λ‘œ μž‘λ™ν•˜λ„λ‘ μˆ˜μ •ν•  수 μ—†λŠ” μž¬ν˜„ κ°€λŠ₯ν•œ 상황을 λ³Ό λ•ŒκΉŒμ§€ μ €λŠ” μžˆλŠ” κ·ΈλŒ€λ‘œ μœ μ§€ν•˜λŠ” κ²½ν–₯이 μžˆμŠ΅λ‹ˆλ‹€.

λͺ¨λ“  ꡬ성 μš”μ†Œμ™€ λ§ˆμ°¬κ°€μ§€λ‘œ ꡬ성 μš”μ†Œ λͺ©λ‘μ—μ„œ ν•΄λ‹Ή ν•­λͺ© 을 제거 λŠ” GitHub 리포지토리 및 ν”„λ ˆμž„μ›Œν¬ λ¬Έμ„œ νŽ˜μ΄μ§€ μž…λ‹ˆλ‹€.

μžλ™ μž¬κ΅¬μ„±μ˜ λ™μž‘μ΄λ‚˜ κ΄€λ ¨ λ¬Έμ„œμ— λŒ€ν•œ νŠΉμ • κ°œμ„  사항이 μžˆλŠ” 경우 μ €ν¬μ—κ²Œ μ•Œλ €μ£Όμ‹œλ©΄ 기꺼이 κ°œμ„ ν•΄ λ“œλ¦¬κ² μŠ΅λ‹ˆλ‹€.

λ˜ν•œ μ •μ˜λœ spring-cloud Bean이 μžˆλŠ” 경우 μžλ™ μž¬κ΅¬μ„±μ΄ μ™„μ „νžˆ λ°©μ§€λ©λ‹ˆλ‹€.

λ‚΄ κ²½ν—˜μƒ κ·Έ ν–‰λ™μ—λŠ” 타이밍 λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. μŠ€ν”„λ§ ν΄λΌμš°λ“œ 빈이 ν”„λ‘œν•„μ— μ •μ˜λ˜μ–΄ 있으면 "이전" μ„ μ–Έλœ 빈(즉, νŠΉμ • ν”„λ‘œν•„ 외뢀에 μ •μ˜λœ 빈)이 μžλ™ μž¬κ΅¬μ„±μ— μ˜ν•΄ 이미 μ‚­μ œλœ 후에 식별될 수 μžˆμŠ΅λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄, 두 개의 DataSource λΉˆμ„ μ •μ˜ν•˜λŠ” ꡬ성이 μžˆλ‹€κ³  κ°€μ •ν•©λ‹ˆλ‹€. ν™˜κ²½/ν”„λ‘œν•„μ— 따라 λ‹¬λΌμ§ˆ 수 μžˆλŠ” λ‚΄μž₯ 데이터 μ†ŒμŠ€μ™€ μ™ΈλΆ€ 데이터 μ†ŒμŠ€. λ‚΄μž₯ 데이터 μ†ŒμŠ€μ— λŒ€ν•œ μ°Έμ‘°λŠ” λ‚΄μž₯ 데이터 μ†ŒμŠ€ 빈 μ •μ˜λ₯Ό 인라인 ν•˜λ„λ‘ ꡬ성 을

λ˜ν•œ 원본 ν¬μŠ€ν„°μ™€ λΉ„μŠ·ν•œ 이유둜 μžλ™ μž¬κ΅¬μ„±μ„ λΉ„ν™œμ„±ν™”ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€. 이해할 수 μ—†λŠ” λ§ˆλ²•μ΄ λ°œμƒν•˜λŠ” 것을 μ›ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
λ°”λ€Œμ—ˆλ‚˜μš”? λΉŒλ“œνŒ©μ„ λΆ„κΈ°ν•˜λŠ” 것 외에 λ‹€λ₯Έ λ°©λ²•μœΌλ‘œ λΉ„ν™œμ„±ν™”ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

μ•ˆλ…•ν•˜μ„Έμš”, 예, 이제 κ°€λŠ₯ν•©λ‹ˆλ‹€.
이제 ꡬ성 νŒŒμΌμ„ 직접 λ³€κ²½ν•˜κΈ° μœ„ν•΄ λΉŒλ“œνŒ©μ„ λΆ„κΈ°ν•˜λŠ” λŒ€μ‹  ν™˜κ²½ λ³€μˆ˜λ₯Ό 톡해 λͺ¨λ“  ꡬ성을 μ„€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ μžλ™ μž¬κ΅¬μ„±μ„ λΉ„ν™œμ„±ν™”ν•˜λ €λ©΄ 이와 같은 ν™˜κ²½ λ³€μˆ˜λ₯Ό μ„€μ •ν•΄μ•Ό ν•©λ‹ˆλ‹€.

cf set-env myapp JBP_CONFIG_SPRING_AUTO_RECONFIGURATION '[enabled: false]'

μžμ„Έν•œ μ •λ³΄λŠ” https://github.com/cloudfoundry/java-buildpack#configuration -and-extension λ¬Έμ„œμ—

λ‚˜λŠ” 이미 λ©”λͺ¨λ¦¬ 계산기 섀정에 이 κΈ°μˆ μ„ μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. λ‹€μ‹œ μ§ˆλ¬Έν•˜κΈ° 전에 λͺ¨λ“  ꡬ성 νŒŒμΌμ„ ν™•μΈν•˜κ³  κ·Έ μ•ˆμ— 무엇이 μžˆλŠ”μ§€ ν™•μΈν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.
κ°μ‚¬ν•©λ‹ˆλ‹€.

λ§€λ‹ˆνŽ˜μŠ€νŠΈ νŒŒμΌμ—μ„œ 이 μž‘μ—…μ„ μˆ˜ν–‰ν•˜λ €λ©΄ λ‹€λ₯Έ ν˜•μ‹μ΄ ν•„μš”ν•©λ‹ˆλ‹€.

이 μ‹œλ„,

JBP_CONFIG_SPRING_AUTO_RECONFIGURATION: '[enabled: false]'

μΆ”κ°€ : μ£Όλͺ©

이 μžλ™ μž¬κ΅¬μ„± λΌμ΄λΈŒλŸ¬λ¦¬κ°€ μ„œλΉ„μŠ€ 연결을 λΆ€λΆ„μ μœΌλ‘œ λΉ„ν™œμ„±ν™”ν•˜λŠ” 것을 지원할 κ³„νšμ΄ μžˆμŠ΅λ‹ˆκΉŒ? 특히, 우리의 μ‚¬μš© μ‚¬λ‘€μ—μ„œλŠ” μ‚¬μš©μž μ§€μ •λœ RedisConnectionFactoryκ°€ ν•„μš”ν•˜μ§€λ§Œ(Azure Redis μ„œλΉ„μŠ€μ— λŒ€ν•œ SSL 연결을 μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ—) 이 μžλ™ μž¬κ΅¬μ„± λΌμ΄λΈŒλŸ¬λ¦¬κ°€ RabbitMQλ₯Ό μž¬κ΅¬μ„±ν•˜κΈ°λ₯Ό μ›ν•©λ‹ˆλ‹€(PCFμ—μ„œ μ œκ³΅ν•˜λŠ” RabbitMQ μ„œλΉ„μŠ€ μ‚¬μš© μ‹œ).

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰