เจ•เฉฐเจชเจพเจ‡เจฒเจก เจกเจฟเจธเจŸเจฐเฉ€เจฌเจฟเจŠเจŸเจก เจธเจฟเจธเจŸเจฎ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐเฉ‡เจธเจผเจจ

เจฎเฉˆเจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจตเจฟเจคเจฐเจฟเจค เจธเจฟเจธเจŸเจฎ เจฆเฉ€ เจธเฉฐเจฐเจšเจจเจพ เจฆเฉ‡ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจฆเจฟเจฒเจšเจธเจช เจตเจฟเจงเฉ€ เจฆเฉฑเจธเจฃเจพ เจšเจพเจนเจพเจ‚เจ—เจพเฅค เจธเฉฐเจฐเจšเจจเจพ เจจเฉ‚เฉฐ เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจ•เจฟเจธเจฎเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ‡เฉฑเจ• เจ•เฉฐเจชเจพเจ‡เจฒ เจ•เฉ€เจคเฉ€ เจญเจพเจธเจผเจพ (เจธเจ•เจพเจฒเจพ) เจตเจฟเฉฑเจš เจธเจฟเฉฑเจงเจพ เจชเฉเจฐเจธเจคเฉเจค เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจ‡เจน เจชเฉ‹เจธเจŸ เจ…เจœเจฟเจนเฉ€ เจธเฉฐเจฐเจšเจจเจพ เจฆเฉ€ เจ‡เฉฑเจ• เจ‰เจฆเจพเจนเจฐเจฃ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเฉ€ เจนเฉˆ เจ…เจคเฉ‡ เจธเจฎเฉเฉฑเจšเฉ€ เจตเจฟเจ•เจพเจธ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจธเฉฐเจ•เจฒเจฟเจค เจธเฉฐเจฐเจšเจจเจพ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฆเฉ‡ เจตเฉฑเจ–-เจตเฉฑเจ– เจชเจนเจฟเจฒเฉ‚เจ†เจ‚ เจฆเฉ€ เจšเจฐเจšเจพ เจ•เจฐเจฆเฉ€ เจนเฉˆเฅค

เจ•เฉฐเจชเจพเจ‡เจฒเจก เจกเจฟเจธเจŸเจฐเฉ€เจฌเจฟเจŠเจŸเจก เจธเจฟเจธเจŸเจฎ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐเฉ‡เจธเจผเจจ

(เจ…เฉฐเจ—เจฐเฉ‡เจœเจผเฉ€)

เจœเจพเจฃ เจชเจ›เจพเจฃ

เจ‡เฉฑเจ• เจญเจฐเฉ‹เจธเฉ‡เจฏเฉ‹เจ— เจตเจฟเจคเจฐเจฟเจค เจธเจฟเจธเจŸเจฎ เจฌเจฃเจพเจ‰เจฃ เจฆเจพ เจฎเจคเจฒเจฌ เจนเฉˆ เจ•เจฟ เจธเจพเจฐเฉ‡ เจจเฉ‹เจก เจธเจนเฉ€ เจธเฉฐเจฐเจšเจจเจพ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจจ, เจฆเฉ‚เจœเฉ‡ เจจเฉ‹เจกเจพเจ‚ เจจเจพเจฒ เจธเจฎเจ•เจพเจฒเฉ€เฅค DevOps เจคเจ•เจจเจพเจฒเฉ‹เจœเฉ€เจ†เจ‚ (เจŸเฉ‡เจฐเจพเจซเจพเจฐเจฎ, เจœเจตเจพเจฌเจฆเฉ‡เจน เจœเจพเจ‚ เจ…เจœเจฟเจนเจพ เจ•เฉเจ) เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจ†เจชเจฃเฉ‡ เจ†เจช เจธเฉฐเจฐเจšเจจเจพ เจซเจพเจˆเจฒเจพเจ‚ (เจ…เจ•เจธเจฐ เจนเจฐเฉ‡เจ• เจจเฉ‹เจก เจฒเจˆ เจ–เจพเจธ) เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจตเจฐเจคเฉ€เจ†เจ‚ เจœเจพเจ‚เจฆเฉ€เจ†เจ‚ เจนเจจเฅค เจ…เจธเฉ€เจ‚ เจ‡เจน เจตเฉ€ เจฏเจ•เฉ€เจจเฉ€ เจฌเจฃเจพเจ‰เจฃเจพ เจšเจพเจนเจพเจ‚เจ—เฉ‡ เจ•เจฟ เจธเจพเจฐเฉ‡ เจธเฉฐเจšเจพเจฐ เจจเฉ‹เจก เจ‡เฉฑเจ•เฉ‹ เจœเจฟเจนเฉ‡ เจชเฉเจฐเฉ‹เจŸเฉ‹เจ•เฉ‹เจฒ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจฐเจนเฉ‡ เจนเจจ (เจ‡เฉฑเจ•เฉ‹ เจธเฉฐเจธเจ•เจฐเจฃ เจธเจฎเฉ‡เจค)เฅค เจจเจนเฉ€เจ‚ เจคเจพเจ‚, เจธเจพเจกเฉ‡ เจตเจฟเจคเจฐเจฟเจค เจธเจฟเจธเจŸเจฎ เจตเจฟเฉฑเจš เจ…เจธเฉฐเจ—เจคเจคเจพ เจฌเจฃเจพเจˆ เจœเจพเจตเฉ‡เจ—เฉ€เฅค JVM เจธเฉฐเจธเจพเจฐ เจตเจฟเฉฑเจš, เจ‡เจธ เจฒเฉ‹เฉœ เจฆเจพ เจ‡เฉฑเจ• เจจเจคเฉ€เจœเจพ เจ‡เจน เจนเฉˆ เจ•เจฟ เจชเฉเจฐเฉ‹เจŸเฉ‹เจ•เฉ‹เจฒ เจธเฉเจจเฉ‡เจนเจฟเจ†เจ‚ เจตเจพเจฒเฉ€ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจฆเจพ เจ‰เจนเฉ€ เจธเฉฐเจธเจ•เจฐเจฃ เจนเจฐ เจฅเจพเจ‚ เจตเจฐเจคเจฟเจ† เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆเฅค

เจ‡เฉฑเจ• เจตเจฟเจคเจฐเจฟเจค เจธเจฟเจธเจŸเจฎ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเจจ เจฌเจพเจฐเฉ‡ เจ•เฉ€? เจฌเฉ‡เจธเจผเฉฑเจ•, เจ…เจธเฉ€เจ‚ เจ‡เจน เจฎเฉฐเจจเจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจเจ•เฉ€เจ•เจฐเจฃ เจŸเฉˆเจธเจŸเจฟเฉฐเจ— 'เจคเฉ‡ เจ…เฉฑเจ—เฉ‡ เจตเจงเจฃ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจธเจพเจฐเฉ‡ เจนเจฟเฉฑเจธเจฟเจ†เจ‚ เจฆเฉ‡ เจฏเฉ‚เจจเจฟเจŸ เจŸเฉˆเจธเจŸ เจนเฉเฉฐเจฆเฉ‡ เจนเจจเฅค (เจฐเฉฐเจจเจŸเจพเจˆเจฎ เจฒเจˆ เจŸเฉˆเจธเจŸ เจฆเฉ‡ เจจเจคเฉ€เจœเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจเจ•เจธเจŸเจฐเจพเจชเฉ‹เจฒเฉ‡เจŸ เจ•เจฐเจจ เจฒเจˆ, เจธเจพเจจเฉ‚เฉฐ เจŸเฉˆเจธเจŸเจฟเฉฐเจ— เจชเฉœเจพเจ… เจ…เจคเฉ‡ เจฐเจจเจŸเจพเจˆเจฎ 'เจคเฉ‡ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€เจ†เจ‚ เจฆเจพ เจ‡เฉฑเจ• เจธเจฎเจพเจจ เจธเฉˆเฉฑเจŸ เจตเฉ€ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจจเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆเฅค)

เจเจ•เฉ€เจ•เจฐเจฃ เจŸเฉˆเจธเจŸเจพเจ‚ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ‡ เจธเจฎเฉ‡เจ‚, เจธเจพเจฐเฉ‡ เจจเฉ‹เจกเจพเจ‚ 'เจคเฉ‡ เจนเจฐ เจœเจ—เฉเจนเจพ เจ‡เฉฑเจ•เฉ‹ เจ•เจฒเจพเจธเจชเจพเจฅ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ เจ…เจ•เจธเจฐ เจ†เจธเจพเจจ เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค เจธเจพเจจเฉ‚เฉฐ เจธเจฟเจฐเจซเจผ เจ‡เจน เจฏเจ•เฉ€เจจเฉ€ เจฌเจฃเจพเจ‰เจฃเจพ เจนเฉˆ เจ•เจฟ เจฐเจจเจŸเจพเจˆเจฎ 'เจคเฉ‡ เจ‡เฉฑเจ•เฉ‹ เจ•เจฒเจพเจธเจชเจพเจฅ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เฉ€เจคเฉ€ เจœเจพเจตเฉ‡เฅค (เจนเจพเจฒเจพเจ‚เจ•เจฟ เจตเฉฑเจ–-เจตเฉฑเจ– เจ•เจฒเจพเจธเจชเจพเจฅเจพเจ‚ เจจเจพเจฒ เจตเฉฑเจ–-เจตเฉฑเจ– เจจเฉ‹เจกเจพเจ‚ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃเจพ เจชเฉ‚เจฐเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจธเฉฐเจญเจต เจนเฉˆ, เจ‡เจน เจธเจฎเฉเฉฑเจšเฉ€ เจธเฉฐเจฐเจšเจจเจพ เจตเจฟเฉฑเจš เจ—เฉเฉฐเจเจฒเจฆเจพเจฐเจคเจพ เจ…เจคเฉ‡ เจคเฉˆเจจเจพเจคเฉ€ เจ…เจคเฉ‡ เจเจ•เฉ€เจ•เจฐเจฃ เจŸเฉˆเจธเจŸเจพเจ‚ เจตเจฟเฉฑเจš เจฎเฉเจธเจผเจ•เจฒเจพเจ‚ เจจเฉ‚เฉฐ เจœเฉ‹เฉœเจฆเจพ เจนเฉˆเฅค) เจ‡เจธ เจชเฉ‹เจธเจŸ เจฆเฉ‡ เจ‰เจฆเฉ‡เจธเจผเจพเจ‚ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจ‡เจน เจฎเฉฐเจจ เจฐเจนเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจธเจพเจฐเฉ‡ เจจเฉ‹เจก เจ‡เฉฑเจ•เฉ‹ เจ•เจฒเจพเจธเจชเจพเจฅ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจ—เฉ‡เฅค

เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเฉ‡ เจจเจพเจฒ เจธเฉฐเจฐเจšเจจเจพ เจตเจฟเจ•เจธเจฟเจค เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค เจ…เจธเฉ€เจ‚ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจฆเฉ‡ เจตเจฟเจ•เจพเจธ เจฆเฉ‡ เจตเฉฑเจ–-เจตเฉฑเจ– เจชเฉœเจพเจตเจพเจ‚ เจฆเฉ€ เจชเจ›เจพเจฃ เจ•เจฐเจจ เจฒเจˆ เจธเฉฐเจธเจ•เจฐเจฃเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค เจธเฉฐเจฐเจšเจจเจพ เจฆเฉ‡ เจตเฉฑเจ–-เจตเฉฑเจ– เจธเฉฐเจธเจ•เจฐเจฃเจพเจ‚ เจฆเฉ€ เจชเจ›เจพเจฃ เจ•เจฐเจจเจพ เจตเฉ€ เจคเจฐเจ•เจชเฉ‚เจฐเจจ เจœเจพเจชเจฆเจพ เจนเฉˆเฅค เจ…เจคเฉ‡ เจธเฉฐเจฐเจšเจจเจพ เจจเฉ‚เฉฐ เจ†เจชเจฃเฉ‡ เจ†เจช เจจเฉ‚เฉฐ เจธเฉฐเจธเจ•เจฐเจฃ เจจเจฟเจฏเฉฐเจคเจฐเจฃ เจธเจฟเจธเจŸเจฎ เจตเจฟเฉฑเจš เจฐเฉฑเจ–เฉ‹. เจœเฉ‡เจ•เจฐ เจ‰เจคเจชเจพเจฆเจจ เจตเจฟเฉฑเจš เจธเจฟเจฐเจซเจผ เจ‡เฉฑเจ• เจธเฉฐเจฐเจšเจจเจพ เจนเฉˆ, เจคเจพเจ‚ เจ…เจธเฉ€เจ‚ เจธเจฟเจฐเจซเจผ เจตเจฐเจœเจจ เจจเฉฐเจฌเจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚เฅค เจœเฉ‡ เจ…เจธเฉ€เจ‚ เจ‰เจคเจชเจพเจฆเจจ เจฆเฉ‡ เจ•เจˆ เจ‰เจฆเจพเจนเจฐเจฃเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚, เจคเจพเจ‚ เจธเจพเจจเฉ‚เฉฐ เจ•เจˆเจ†เจ‚ เจฆเฉ€ เจฒเฉ‹เฉœ เจชเจตเฉ‡เจ—เฉ€
เจธเฉฐเจฐเจšเจจเจพ เจธเจผเจพเจ–เจพเจตเจพเจ‚ เจ…เจคเฉ‡ เจธเฉฐเจธเจ•เจฐเจฃ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ เจ‡เฉฑเจ• เจตเจพเจงเฉ‚ เจฒเฉ‡เจฌเจฒ (เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจธเจผเจพเจ–เจพ เจฆเจพ เจจเจพเจฎ)เฅค เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจ…เจธเฉ€เจ‚ เจธเจนเฉ€ เจธเฉฐเจฐเจšเจจเจพ เจจเฉ‚เฉฐ เจธเจชเจธเจผเจŸ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจชเจ›เจพเจฃ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚เฅค เจนเจฐเฉ‡เจ• เจธเฉฐเจฐเจšเจจเจพ เจชเจ›เจพเจฃเจ•เจฐเจคเจพ เจตเจฟเจฒเฉฑเจ–เจฃ เจคเฉŒเจฐ 'เจคเฉ‡ เจตเจฟเจคเจฐเจฟเจค เจจเฉ‹เจกเจพเจ‚, เจชเฉ‹เจฐเจŸเจพเจ‚, เจฌเจพเจนเจฐเฉ€ เจธเจฐเฉ‹เจคเจพเจ‚, เจ…เจคเฉ‡ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจธเฉฐเจธเจ•เจฐเจฃเจพเจ‚ เจฆเฉ‡ เจ‡เฉฑเจ• เจ–เจพเจธ เจธเฉเจฎเฉ‡เจฒ เจจเจพเจฒ เจฎเฉ‡เจฒ เจ–เจพเจ‚เจฆเจพ เจนเฉˆเฅค เจ‡เจธ เจชเฉ‹เจธเจŸ เจฆเฉ‡ เจ‰เจฆเฉ‡เจธเจผเจพเจ‚ เจฒเจˆ เจ…เจธเฉ€เจ‚ เจ‡เจน เจฎเฉฐเจจเจพเจ‚เจ—เฉ‡ เจ•เจฟ เจ‡เฉฑเจฅเฉ‡ เจธเจฟเจฐเจซ เจ‡เฉฑเจ• เจธเจผเจพเจ–เจพ เจนเฉˆ เจ…เจคเฉ‡ เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจฌเจฟเฉฐเจฆเฉ€ (1.2.3) เจฆเฉเจ†เจฐเจพ เจตเฉฑเจ– เจ•เฉ€เจคเฉ‡ เจคเจฟเฉฐเจจ เจจเฉฐเจฌเจฐเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ†เจฎ เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ เจธเฉฐเจฐเจšเจจเจพ เจฆเฉ€ เจชเจ›เจพเจฃ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚เฅค

เจ†เจงเฉเจจเจฟเจ• เจตเจพเจคเจพเจตเจฐเจฃ เจตเจฟเฉฑเจš, เจธเฉฐเจฐเจšเจจเจพ เจซเจพเจˆเจฒเจพเจ‚ เจฌเจนเฉเจค เจ˜เฉฑเจŸ เจนเฉ€ เจนเฉฑเจฅเฉ€เจ‚ เจฌเจฃเจพเจˆเจ†เจ‚ เจœเจพเจ‚เจฆเฉ€เจ†เจ‚ เจนเจจเฅค เจ…เจ•เจธเจฐ เจ‰เจน เจคเฉˆเจจเจพเจคเฉ€ เจฆเฉ‡ เจฆเฉŒเจฐเจพเจจ เจคเจฟเจ†เจฐ เจ•เฉ€เจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจ เจ…เจคเฉ‡ เจนเฉเจฃ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ›เฉ‚เจนเจฟเจ† เจจเจนเฉ€เจ‚ เจœเจพเจ‚เจฆเจพ เจนเฉˆ (เจคเจพเจ‚ เจ•เจฟ เจ•เฉเจ เจตเฉ€ เจจเจพ เจคเฉ‹เฉœเฉ‹). เจ‡เฉฑเจ• เจ•เฉเจฆเจฐเจคเฉ€ เจธเจตเจพเจฒ เจ‰เฉฑเจ เจฆเจพ เจนเฉˆ: เจ…เจธเฉ€เจ‚ เจ…เจœเฉ‡ เจตเฉ€ เจธเฉฐเจฐเจšเจจเจพ เจจเฉ‚เฉฐ เจธเจŸเฉ‹เจฐ เจ•เจฐเจจ เจฒเจˆ เจŸเฉˆเจ•เจธเจŸ เจซเจพเจฐเจฎเฉˆเจŸ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฟเจ‰เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚? เจ‡เฉฑเจ• เจตเจฟเจนเจพเจฐเจ• เจตเจฟเจ•เจฒเจช เจธเฉฐเจฐเจšเจจเจพ เจฒเจˆ เจจเจฟเจฏเจฎเจค เจ•เฉ‹เจก เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจ…เจคเฉ‡ เจ•เฉฐเจชเจพเจˆเจฒ-เจŸเจพเจˆเจฎ เจœเจพเจ‚เจšเจพเจ‚ เจคเฉ‹เจ‚ เจฒเจพเจญ เจฒเฉˆเจฃ เจฆเฉ€ เจฏเฉ‹เจ—เจคเจพ เจœเจพเจชเจฆเจพ เจนเฉˆเฅค

เจ‡เจธ เจชเฉ‹เจธเจŸ เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจธเฉฐเจ•เจฒเจฟเจค เจ†เจฐเจŸเฉ€เจซเฉˆเจ•เจŸ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจ‡เฉฑเจ• เจธเฉฐเจฐเจšเจจเจพ เจจเฉ‚เฉฐ เจฆเจฐเจธเจพเจ‰เจฃ เจฆเฉ‡ เจตเจฟเจšเจพเจฐ เจฆเฉ€ เจชเฉœเจšเฉ‹เจฒ เจ•เจฐเจพเจ‚เจ—เฉ‡.

เจธเฉฐเจ•เจฒเจฟเจค เจธเฉฐเจฐเจšเจจเจพ

เจ‡เจน เจญเจพเจ— เจ‡เฉฑเจ• เจธเจฅเจฟเจฐ เจธเฉฐเจ•เจฒเจฟเจค เจธเฉฐเจฐเจšเจจเจพ เจฆเฉ€ เจ‰เจฆเจพเจนเจฐเจจ เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค เจฆเฉ‹ เจธเจงเจพเจฐเจจ เจธเฉ‡เจตเจพเจตเจพเจ‚ เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเฉ€เจ†เจ‚ เจ—เจˆเจ†เจ‚ เจนเจจ - เจˆเจ•เฉ‹ เจธเจฐเจตเจฟเจธ เจ…เจคเฉ‡ เจˆเจ•เฉ‹ เจธเจฐเจตเจฟเจธ เจ•เจฒเจพเจ‡เฉฐเจŸเฅค เจ‡เจนเจจเจพเจ‚ เจฆเฉ‹ เจธเฉ‡เจตเจพเจตเจพเจ‚ เจฆเฉ‡ เจ…เจงเจพเจฐ เจคเฉ‡, เจฆเฉ‹ เจธเจฟเจธเจŸเจฎ เจตเจฟเจ•เจฒเจช เจ‡เจ•เฉฑเจ เฉ‡ เจ•เฉ€เจคเฉ‡ เจ—เจ เจนเจจเฅค เจ‡เฉฑเจ• เจตเจฟเจ•เจฒเจช เจตเจฟเฉฑเจš, เจฆเฉ‹เจตเฉ‡เจ‚ เจธเฉ‡เจตเจพเจตเจพเจ‚ เจ‡เฉฑเจ•เฉ‹ เจจเฉ‹เจก 'เจคเฉ‡ เจธเจฅเจฟเจค เจนเจจ, เจฆเฉ‚เจœเฉ‡ เจตเจฟเจ•เจฒเจช เจตเจฟเฉฑเจš - เจตเฉฑเจ–-เจตเฉฑเจ– เจจเฉ‹เจกเจพเจ‚ 'เจคเฉ‡เฅค

เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจ‡เฉฑเจ• เจตเฉฐเจกเฉ‡ เจธเจฟเจธเจŸเจฎ เจตเจฟเฉฑเจš เจ•เจˆ เจจเฉ‹เจก เจนเฉเฉฐเจฆเฉ‡ เจนเจจเฅค เจคเฉเจธเฉ€เจ‚ เจ•เจฟเจธเฉ‡ เจ•เจฟเจธเจฎ เจฆเฉ‡ เจฎเฉเฉฑเจฒเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจจเฉ‹เจกเจพเจ‚ เจฆเฉ€ เจชเจ›เจพเจฃ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ NodeId:

sealed trait NodeId
case object Backend extends NodeId
case object Frontend extends NodeId

เจœ

case class NodeId(hostName: String)

เจœเจพเจ‚ เจตเฉ€

object Singleton
type NodeId = Singleton.type

เจจเฉ‹เจก เจตเฉฑเจ–-เจตเฉฑเจ– เจญเฉ‚เจฎเจฟเจ•เจพเจตเจพเจ‚ เจจเจฟเจญเจพเจ‰เจ‚เจฆเฉ‡ เจนเจจ, เจ‰เจน เจธเฉ‡เจตเจพเจตเจพเจ‚ เจšเจฒเจพเจ‰เจ‚เจฆเฉ‡ เจนเจจ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจตเจฟเจšเจ•เจพเจฐ TCP/HTTP เจ•เจจเฉˆเจ•เจธเจผเจจ เจธเจฅเจพเจชเจค เจ•เฉ€เจคเฉ‡ เจœเจพ เจธเจ•เจฆเฉ‡ เจนเจจเฅค

เจ‡เฉฑเจ• TCP เจ•เฉเจจเฉˆเจ•เจธเจผเจจ เจฆเจพ เจตเจฐเจฃเจจ เจ•เจฐเจจ เจฒเจˆ เจธเจพเจจเฉ‚เฉฐ เจ˜เฉฑเจŸเฉ‹-เจ˜เฉฑเจŸ เจ‡เฉฑเจ• เจชเฉ‹เจฐเจŸ เจจเฉฐเจฌเจฐ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค เจ…เจธเฉ€เจ‚ เจ‰เจธ เจชเฉเจฐเฉ‹เจŸเฉ‹เจ•เฉ‹เจฒ เจจเฉ‚เฉฐ เจตเฉ€ เจฆเจฐเจธเจพเจ‰เจฃเจพ เจšเจพเจนเจพเจ‚เจ—เฉ‡ เจœเฉ‹ เจ‰เจธ เจชเฉ‹เจฐเจŸ 'เจคเฉ‡ เจธเจฎเจฐเจฅเจฟเจค เจนเฉˆ เจ‡เจน เจฏเจ•เฉ€เจจเฉ€ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจ•เจฟ เจ•เจฒเจพเจ‡เฉฐเจŸ เจ…เจคเฉ‡ เจธเจฐเจตเจฐ เจฆเฉ‹เจตเฉ‡เจ‚ เจ‡เฉฑเจ•เฉ‹ เจชเฉเจฐเฉ‹เจŸเฉ‹เจ•เฉ‹เจฒ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจฐเจนเฉ‡ เจนเจจเฅค เจ…เจธเฉ€เจ‚ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ€ เจ•เจฒเจพเจธ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ•เฉเจจเฉˆเจ•เจธเจผเจจ เจฆเจพ เจตเจฐเจฃเจจ เจ•เจฐเจพเจ‚เจ—เฉ‡:

case class TcpEndPoint[Protocol](node: NodeId, port: Port[Protocol])

เจœเจฟเฉฑเจฅเฉ‡ Port - เจธเจฟเจฐเจซเจผ เจ‡เฉฑเจ• เจชเฉ‚เจฐเจจ เจ…เฉฐเจ• Int เจธเจตเฉ€เจ•เจพเจฐเจฏเฉ‹เจ— เจฎเฉเฉฑเจฒเจพเจ‚ เจฆเฉ€ เจฐเฉ‡เจ‚เจœ เจจเฉ‚เฉฐ เจฆเจฐเจธเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ:

type PortNumber = Refined[Int, Closed[_0, W.`65535`.T]]

เจธเจผเฉเฉฑเจง เจ•เจฟเจธเจฎ

เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจตเฉ‡เจ–เฉ‹ เจฐเจฟเจซเจพเจˆเจจเจก ะธ เจฎเฉ‡เจฐเจพ เจฐเจฟเจชเฉ‹เจฐเจŸ. เจธเฉฐเจ–เฉ‡เจช เจตเจฟเฉฑเจš, เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‰เจนเจจเจพเจ‚ เจ•เจฟเจธเจฎเจพเจ‚ เจตเจฟเฉฑเจš เจฐเฉเจ•เจพเจตเจŸเจพเจ‚ เจœเฉ‹เฉœเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเฉ€ เจนเฉˆ เจœเฉ‹ เจ•เฉฐเจชเจพเจˆเจฒ เจธเจฎเฉ‡เจ‚ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆเฅค เจ‡เจธ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš, เจตเฉˆเจง เจชเฉ‹เจฐเจŸ เจจเฉฐเจฌเจฐ เจฎเฉเฉฑเจฒ 16-เจฌเจฟเฉฑเจŸ เจชเฉ‚เจฐเจจ เจ…เฉฐเจ• เจนเจจเฅค เจ•เฉฐเจชเจพเจˆเจฒ เจ•เฉ€เจคเฉ€ เจธเฉฐเจฐเจšเจจเจพ เจฒเจˆ, เจฐเจฟเจซเจพเจˆเจจเจก เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ เจฒเจพเจœเจผเจฎเฉ€ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจชเจฐ เจ‡เจน เจ•เฉฐเจชเจพเจˆเจฒเจฐ เจฆเฉ€ เจธเฉฐเจฐเจšเจจเจพ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเจจ เจฆเฉ€ เจฏเฉ‹เจ—เจคเจพ เจจเฉ‚เฉฐ เจธเฉเจงเจพเจฐเจฆเจพ เจนเฉˆเฅค

HTTP (REST) โ€‹โ€‹เจชเฉเจฐเฉ‹เจŸเฉ‹เจ•เฉ‹เจฒ เจฒเจˆ, เจชเฉ‹เจฐเจŸ เจจเฉฐเจฌเจฐ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจธเจพเจจเฉ‚เฉฐ เจธเฉ‡เจตเจพ เจฒเจˆ เจฎเจพเจฐเจ— เจฆเฉ€ เจตเฉ€ เจฒเฉ‹เฉœ เจนเฉ‹ เจธเจ•เจฆเฉ€ เจนเฉˆ:

type UrlPathPrefix = Refined[String, MatchesRegex[W.`"[a-zA-Z_0-9/]*"`.T]]
case class PortWithPrefix[Protocol](portNumber: PortNumber, pathPrefix: UrlPathPrefix)

เจซเฉˆเจ‚เจŸเจฎ เจ•เจฟเจธเจฎเจพเจ‚

เจ•เฉฐเจชเจพเจˆเจฒ เจธเจฎเฉ‡เจ‚ เจชเฉเจฐเฉ‹เจŸเฉ‹เจ•เฉ‹เจฒ เจฆเฉ€ เจชเจ›เจพเจฃ เจ•เจฐเจจ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจ•เจฟเจธเจฎ เจฆเฉ‡ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ เจœเฉ‹ เจ•เจฒเจพเจธ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจจเจนเฉ€เจ‚ เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจ‡เจน เจซเฉˆเจธเจฒเจพ เจ‡เจธ เจคเฉฑเจฅ เจฆเฉ‡ เจ•เจพเจฐเจจ เจนเฉˆ เจ•เจฟ เจ…เจธเฉ€เจ‚ เจฐเจจเจŸเจพเจˆเจฎ 'เจคเฉ‡ เจ‡เฉฑเจ• เจชเฉเจฐเฉ‹เจŸเฉ‹เจ•เฉ‹เจฒ เจ‰เจฆเจพเจนเจฐเจฃ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเฉ‡, เจชเจฐ เจ…เจธเฉ€เจ‚ เจ•เฉฐเจชเจพเจˆเจฒเจฐ เจจเฉ‚เฉฐ เจชเฉเจฐเฉ‹เจŸเฉ‹เจ•เฉ‹เจฒ เจ…เจจเฉเจ•เฉ‚เจฒเจคเจพ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเจจเจพ เจšเจพเจนเจพเจ‚เจ—เฉ‡เฅค เจชเฉเจฐเฉ‹เจŸเฉ‹เจ•เฉ‹เจฒ เจจเฉ‚เฉฐ เจจเจฟเจธเจผเจšเจฟเจค เจ•เจฐเจ•เฉ‡, เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจจเจฟเจฐเจญเจฐเจคเจพ เจฆเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡ เจ…เจฃเจ‰เจšเจฟเจค เจธเฉ‡เจตเจพ เจจเฉ‚เฉฐ เจชเจพเจธ เจ•เจฐเจจ เจฆเฉ‡ เจฏเฉ‹เจ— เจจเจนเฉ€เจ‚ เจนเฉ‹เจตเจพเจ‚เจ—เฉ‡เฅค

เจ‡เฉฑเจ• เจ†เจฎ เจชเฉเจฐเฉ‹เจŸเฉ‹เจ•เฉ‹เจฒ Json เจธเฉ€เจฐเฉ€เจ…เจฒเจพเจˆเจœเจผเฉ‡เจธเจผเจจ เจฆเฉ‡ เจจเจพเจฒ REST API เจนเฉˆ:

sealed trait JsonHttpRestProtocol[RequestMessage, ResponseMessage]

เจœเจฟเฉฑเจฅเฉ‡ RequestMessage - เจฌเฉ‡เจจเจคเฉ€ เจฆเฉ€ เจ•เจฟเจธเจฎ, ResponseMessage - เจœเจตเจพเจฌ เจฆเฉ€ เจ•เจฟเจธเจฎ.
เจฌเฉ‡เจธเจผเฉฑเจ•, เจ…เจธเฉ€เจ‚ เจนเฉ‹เจฐ เจชเฉเจฐเฉ‹เจŸเฉ‹เจ•เฉ‹เจฒ เจตเจฐเจฃเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚ เจœเฉ‹ เจธเจพเจจเฉ‚เฉฐ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ‡ เจตเจฐเจฃเจจ เจฆเฉ€ เจธเจผเฉเฉฑเจงเจคเจพ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค

เจ‡เจธ เจชเฉ‹เจธเจŸ เจฆเฉ‡ เจ‰เจฆเฉ‡เจธเจผเจพเจ‚ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจชเฉเจฐเฉ‹เจŸเฉ‹เจ•เฉ‹เจฒ เจฆเฉ‡ เจ‡เฉฑเจ• เจธเจฐเจฒ เจฐเฉ‚เจช เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจพเจ‚เจ—เฉ‡:

sealed trait SimpleHttpGetRest[RequestMessage, ResponseMessage]

เจ‡เฉฑเจฅเฉ‡ เจฌเฉ‡เจจเจคเฉ€ url เจจเจพเจฒ เจœเฉ‹เฉœเฉ€ เจ—เจˆ เจ‡เฉฑเจ• เจธเจคเจฐ เจนเฉˆ เจ…เจคเฉ‡ เจœเจตเจพเจฌ HTTP เจœเจตเจพเจฌ เจฆเฉ‡ เจฎเฉเฉฑเจ– เจญเจพเจ— เจตเจฟเฉฑเจš เจตเจพเจชเจธ เจ•เฉ€เจคเฉ€ เจ—เจˆ เจธเจคเจฐ เจนเฉˆเฅค

เจธเฉ‡เจตเจพ เจธเฉฐเจฐเจšเจจเจพ เจจเฉ‚เฉฐ เจธเฉ‡เจตเจพ เจฆเฉ‡ เจจเจพเจฎ, เจชเฉ‹เจฐเจŸเจพเจ‚ เจ…เจคเฉ‡ เจจเจฟเจฐเจญเจฐเจคเจพเจตเจพเจ‚ เจฆเฉเจ†เจฐเจพ เจฆเจฐเจธเจพเจ‡เจ† เจ—เจฟเจ† เจนเฉˆเฅค เจ‡เจนเจจเจพเจ‚ เจคเฉฑเจคเจพเจ‚ เจจเฉ‚เฉฐ เจธเจ•เฉ‡เจฒเจพ เจตเจฟเฉฑเจš เจ•เจˆ เจคเจฐเฉ€เจ•เจฟเจ†เจ‚ เจจเจพเจฒ เจฆเจฐเจธเจพเจ‡เจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ (เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, HList-s, เจฌเฉ€เจœเจ—เจฃเจฟเจคเจฟเจ• เจกเฉ‡เจŸเจพ เจ•เจฟเจธเจฎเจพเจ‚)เฅค เจ‡เจธ เจชเฉ‹เจธเจŸ เจฆเฉ‡ เจ‰เจฆเฉ‡เจธเจผเจพเจ‚ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจ•เฉ‡เจ• เจชเฉˆเจŸเจฐเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจพเจ‚เจ—เฉ‡ เจ…เจคเฉ‡ เจตเจฐเจคเจฆเฉ‡ เจนเฉ‹เจ เจฎเฉ‹เจกเฉ€เจŠเจฒ เจฆเฉ€ เจจเฉเจฎเจพเจ‡เฉฐเจฆเจ—เฉ€ เจ•เจฐเจพเจ‚เจ—เฉ‡ trait'เจ“. (เจ•เฉ‡เจ• เจชเฉˆเจŸเจฐเจจ เจ‡เจธ เจชเจนเฉเฉฐเจš เจฆเจพ เจ‡เฉฑเจ• เจฒเฉ‹เฉœเฉ€เจ‚เจฆเจพ เจคเฉฑเจค เจจเจนเฉ€เจ‚ เจนเฉˆเฅค เจ‡เจน เจธเจฟเจฐเจซเจผ เจ‡เฉฑเจ• เจธเฉฐเจญเจต เจฒเจพเจ—เฉ‚ เจ•เจฐเจจเจพ เจนเฉˆเฅค)

เจธเฉ‡เจตเจพเจตเจพเจ‚ เจฆเฉ‡ เจตเจฟเจšเจ•เจพเจฐ เจจเจฟเจฐเจญเจฐเจคเจพ เจจเฉ‚เฉฐ เจ‰เจนเจจเจพเจ‚ เจคเจฐเฉ€เจ•เจฟเจ†เจ‚ เจตเจœเฉ‹เจ‚ เจฆเจฐเจธเจพเจ‡เจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ เจœเฉ‹ เจชเฉ‹เจฐเจŸเจพเจ‚ เจจเฉ‚เฉฐ เจตเจพเจชเจธ เจ•เจฐเจฆเฉ‡ เจนเจจ EndPointเจฆเฉ‡ เจนเฉ‹เจฐ เจจเฉ‹เจกเจธ:

  type EchoProtocol[A] = SimpleHttpGetRest[A, A]

  trait EchoConfig[A] extends ServiceConfig {
    def portNumber: PortNumber = 8081
    def echoPort: PortWithPrefix[EchoProtocol[A]] = PortWithPrefix[EchoProtocol[A]](portNumber, "echo")
    def echoService: HttpSimpleGetEndPoint[NodeId, EchoProtocol[A]] = providedSimpleService(echoPort)
  }

เจ‡เฉฑเจ• เจˆเจ•เฉ‹ เจธเฉ‡เจตเจพ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจธเจฟเจฐเจซเจผ เจ‡เฉฑเจ• เจชเฉ‹เจฐเจŸ เจจเฉฐเจฌเจฐ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจธเฉฐเจ•เฉ‡เจค เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ เจ•เจฟ เจชเฉ‹เจฐเจŸ เจˆเจ•เฉ‹ เจชเฉเจฐเฉ‹เจŸเฉ‹เจ•เฉ‹เจฒ เจฆเจพ เจธเจฎเจฐเจฅเจจ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจ–เจพเจธ เจชเฉ‹เจฐเจŸ เจจเฉ‚เฉฐ เจจเจฟเจฐเจงเจพเจฐเจฟเจค เจจเจนเฉ€เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡, เจ•เจฟเจ‰เจ‚เจ•เจฟ... เจ—เฉเจฃ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฌเจฟเจจเจพเจ‚ เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเฉ‡ เจคเจฐเฉ€เจ•เจฟเจ†เจ‚ เจฆเจพ เจเจฒเจพเจจ เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเฉ‡ เจนเจจ (เจธเจพเจฐ เจตเจฟเจงเฉ€เจ†เจ‚)เฅค เจ‡เจธ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš, เจ‡เฉฑเจ• เจ เฉ‹เจธ เจธเฉฐเจฐเจšเจจเจพ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจธเจฎเฉ‡เจ‚, เจ•เฉฐเจชเจพเจˆเจฒเจฐ เจจเฉ‚เฉฐ เจธเจพเจจเฉ‚เฉฐ เจเจฌเจธเจŸเจฐเฉˆเจ•เจŸ เจตเจฟเจงเฉ€ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจชเฉ‹เจฐเจŸ เจจเฉฐเจฌเจฐ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉ‹เจตเฉ‡เจ—เฉ€เฅค เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ…เจธเฉ€เจ‚ เจตเจฟเจงเฉ€ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเจพ เจนเฉˆ, เจ‡เฉฑเจ• เจ–เจพเจธ เจธเฉฐเจฐเจšเจจเจพ เจฌเจฃเจพเจ‰เจฃ เจตเฉ‡เจฒเฉ‡, เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจตเฉฑเจ–เจฐเฉ€ เจชเฉ‹เจฐเจŸ เจจเจฟเจฐเจงเจพเจฐเจค เจจเจนเฉ€เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚เฅค เจกเจฟเจซเจพเจฒเจŸ เจฎเฉเฉฑเจฒ เจตเจฐเจคเจฟเจ† เจœเจพเจตเฉ‡เจ—เจพเฅค

เจ•เจฒเจพเจ‡เฉฐเจŸ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐเฉ‡เจธเจผเจจ เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ เจˆเจ•เฉ‹ เจธเฉ‡เจตเจพ 'เจคเฉ‡ เจจเจฟเจฐเจญเจฐเจคเจพ เจ˜เฉ‹เจธเจผเจฟเจค เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚:

  trait EchoClientConfig[A] {
    def testMessage: String = "test"
    def pollInterval: FiniteDuration
    def echoServiceDependency: HttpSimpleGetEndPoint[_, EchoProtocol[A]]
  }

เจจเจฟเจฐเจญเจฐเจคเจพ เจ‰เจธเฉ‡ เจ•เจฟเจธเจฎ เจฆเฉ€ เจนเฉˆ เจœเจฟเจตเฉ‡เจ‚ เจจเจฟเจฐเจฏเจพเจค เจธเฉ‡เจตเจพ echoService. เจ–เจพเจธ เจคเฉŒเจฐ 'เจคเฉ‡, เจˆเจ•เฉ‹ เจ•เจฒเจพเจ‡เฉฐเจŸ เจตเจฟเฉฑเจš เจธเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ•เฉ‹ เจชเฉเจฐเฉ‹เจŸเฉ‹เจ•เฉ‹เจฒ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค เจ‡เจธ เจฒเจˆ, เจฆเฉ‹ เจธเฉ‡เจตเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจœเฉ‹เฉœเจฆเฉ‡ เจธเจฎเฉ‡เจ‚, เจ…เจธเฉ€เจ‚ เจจเจฟเจธเจผเจšเจค เจนเฉ‹ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจธเจญ เจ•เฉเจ เจธเจนเฉ€ เจขเฉฐเจ— เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเฉ‡เจ—เจพเฅค

เจธเฉ‡เจตเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจเจพ

เจธเฉ‡เจตเจพ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจจ เจ…เจคเฉ‡ เจฌเฉฐเจฆ เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจซเฉฐเจ•เจธเจผเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค (เจ•เจฟเจธเฉ‡ เจธเฉ‡เจตเจพ เจจเฉ‚เฉฐ เจฐเฉ‹เจ•เจฃ เจฆเฉ€ เจฏเฉ‹เจ—เจคเจพ เจŸเฉˆเจธเจŸเจฟเฉฐเจ— เจฒเจˆ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจนเฉˆเฅค) เจฆเฉเจฌเจพเจฐเจพ, เจ…เจœเจฟเจนเฉ€ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฒเจˆ เจ•เจˆ เจตเจฟเจ•เจฒเจช เจนเจจ (เจ‰เจฆเจพเจนเจฐเจฃ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจธเฉฐเจฐเจšเจจเจพ เจ•เจฟเจธเจฎ เจฆเฉ‡ เจ…เจงเจพเจฐ เจคเฉ‡ เจ•เจฟเจธเจฎ เจฆเฉ€เจ†เจ‚ เจ•เจฒเจพเจธเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚)เฅค เจ‡เจธ เจชเฉ‹เจธเจŸ เจฆเฉ‡ เจ‰เจฆเฉ‡เจธเจผเจพเจ‚ เจฒเจˆ เจ…เจธเฉ€เจ‚ เจ•เฉ‡เจ• เจชเฉˆเจŸเจฐเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจพเจ‚เจ—เฉ‡เฅค เจ…เจธเฉ€เจ‚ เจ•เจฒเจพเจธ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจธเฉ‡เจตเจพ เจฆเฉ€ เจจเฉเจฎเจพเจ‡เฉฐเจฆเจ—เฉ€ เจ•เจฐเจพเจ‚เจ—เฉ‡ cats.Resource, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ‡เจน เจธเจผเฉเจฐเฉ‡เจฃเฉ€ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจธเจฎเฉฑเจธเจฟเจ†เจตเจพเจ‚ เจฆเฉ€ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš เจธเจฐเฉ‹เจคเจพเจ‚ เจฆเฉ€ เจฐเจฟเจนเจพเจˆ เจฆเฉ€ เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจ—เจพเจฐเฉฐเจŸเฉ€ เจฆเฉ‡เจฃ เจฒเจˆ เจธเจพเจงเจจ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเฉ€ เจนเฉˆเฅค เจ‡เฉฑเจ• เจธเจฐเฉ‹เจค เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจฒเจˆ, เจธเจพเจจเฉ‚เฉฐ เจธเฉฐเจฐเจšเจจเจพ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจฐเฉˆเจกเฉ€เจฎเฉ‡เจก เจฐเจจเจŸเจพเจˆเจฎ เจธเฉฐเจฆเจฐเจญ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค เจธเจฐเจตเจฟเจธ เจธเจŸเจพเจฐเจŸเจ…เจช เจซเฉฐเจ•เจธเจผเจจ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฆเจฟเจ–เจพเจˆ เจฆเฉ‡ เจธเจ•เจฆเจพ เจนเฉˆ:

  type ResourceReader[F[_], Config, A] = Reader[Config, Resource[F, A]]

  trait ServiceImpl[F[_]] {
    type Config
    def resource(
      implicit
      resolver: AddressResolver[F],
      timer: Timer[F],
      contextShift: ContextShift[F],
      ec: ExecutionContext,
      applicative: Applicative[F]
    ): ResourceReader[F, Config, Unit]
  }

เจœเจฟเฉฑเจฅเฉ‡

  • Config โ€” เจ‡เจธ เจธเฉ‡เจตเจพ เจฒเจˆ เจธเฉฐเจฐเจšเจจเจพ เจ•เจฟเจธเจฎ
  • AddressResolver โ€” เจ‡เฉฑเจ• เจฐเจจเจŸเจพเจˆเจฎ เจ†เจฌเจœเฉˆเจ•เจŸ เจœเฉ‹ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจนเฉ‹เจฐ เจจเฉ‹เจกเจพเจ‚ เจฆเฉ‡ เจชเจคเฉ‡ เจฒเฉฑเจญเจฃ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ (เจนเฉ‡เจ เจพเจ‚ เจฆเฉ‡เจ–เฉ‹)

เจ…เจคเฉ‡ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจคเฉ‹เจ‚ เจนเฉ‹เจฐ เจ•เจฟเจธเจฎเจพเจ‚ cats:

  • F[_] - เจชเฉเจฐเจญเจพเจต เจฆเฉ€ เจ•เจฟเจธเจฎ (เจธเจงเจพเจฐเจจ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš F[A] เจธเจฟเจฐเจซเจผ เจ‡เฉฑเจ• เจซเฉฐเจ•เจธเจผเจจ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ () => A. เจ‡เจธ เจชเฉ‹เจธเจŸ เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ เจตเจฐเจคเจพเจ‚เจ—เฉ‡ cats.IO.)
  • Reader[A,B] - เจซเฉฐเจ•เจธเจผเจจ เจจเจพเจฒ เจ˜เฉฑเจŸ เจœเจพเจ‚ เจ˜เฉฑเจŸ เจธเจฎเจพเจจเจพเจฐเจฅเฉ€ A => B
  • cats.Resource - เจ‡เฉฑเจ• เจธเจฐเฉ‹เจค เจœเฉ‹ เจชเฉเจฐเจพเจชเจค เจ…เจคเฉ‡ เจœเจพเจฐเฉ€ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ
  • Timer - เจŸเจพเจˆเจฎเจฐ (เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ•เฉเจ เจธเจฎเฉ‡เจ‚ เจฒเจˆ เจธเฉŒเจฃ เจ…เจคเฉ‡ เจธเจฎเฉ‡เจ‚ เจฆเฉ‡ เจ…เฉฐเจคเจฐเจพเจฒ เจจเฉ‚เฉฐ เจฎเจพเจชเจฃ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ)
  • ContextShift - เจเจจเจพเจฒเจพเจ— ExecutionContext
  • Applicative - เจ‡เฉฑเจ• เจชเฉเจฐเจญเจพเจต เจ•เจฟเจธเจฎ เจฆเฉ€ เจ•เจฒเจพเจธ เจœเฉ‹ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจตเจฟเจ…เจ•เจคเฉ€เจ—เจค เจชเฉเจฐเจญเจพเจตเจพเจ‚ (เจฒเจ—เจญเจ— เจ‡เฉฑเจ• เจฎเฉ‹เจจเจพเจก) เจจเฉ‚เฉฐ เจœเฉ‹เฉœเจจ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเจฟเฉฐเจฆเฉ€ เจนเฉˆเฅค เจตเจงเฉ‡เจฐเฉ‡ เจ—เฉเฉฐเจเจฒเจฆเจพเจฐ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš เจ‡เจธเจจเฉ‚เฉฐ เจตเจฐเจคเจฃเจพ เจฌเจฟเจนเจคเจฐ เจฒเฉฑเจ—เจฆเจพ เจนเฉˆ Monad/ConcurrentEffect.

เจ‡เจธ เจซเฉฐเจ•เจธเจผเจจ เจฆเจธเจคเจ–เจค เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ…เจธเฉ€เจ‚ เจ•เจˆ เจธเฉ‡เจตเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚เฅค เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจ‡เฉฑเจ• เจธเฉ‡เจตเจพ เจœเฉ‹ เจ•เฉเจ เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเฉ€:

  trait ZeroServiceImpl[F[_]] extends ServiceImpl[F] {
    type Config <: Any
    def resource(...): ResourceReader[F, Config, Unit] =
      Reader(_ => Resource.pure[F, Unit](()))
  }

(เจธเฉˆ.เจฎเฉ€. เจธเจฐเฉ‹เจค, เจœเจฟเจธ เจตเจฟเฉฑเจš เจนเฉ‹เจฐ เจธเฉ‡เจตเจพเจตเจพเจ‚ เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเฉ€เจ†เจ‚ เจœเจพเจ‚เจฆเฉ€เจ†เจ‚ เจนเจจ - เจˆเจ•เฉ‹ เจธเฉ‡เจตเจพ, เจˆเจ•เฉ‹ เจ•เจฒเจพเจ‡เฉฐเจŸ
ะธ เจœเฉ€เจตเจจ เจญเจฐ เจ•เฉฐเจŸเจฐเฉ‹เจฒเจฐ.)

เจ‡เฉฑเจ• เจจเฉ‹เจก เจ‡เฉฑเจ• เจตเจธเจคเฉ‚ เจนเฉˆ เจœเฉ‹ เจ•เจˆ เจธเฉ‡เจตเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจฒเจพเจ‚เจš เจ•เจฐ เจธเจ•เจฆเฉ€ เจนเฉˆ (เจธเจฐเฉ‹เจคเจพเจ‚ เจฆเฉ€ เจ‡เฉฑเจ• เจฒเฉœเฉ€ เจฆเฉ€ เจธเจผเฉเจฐเฉ‚เจ†เจค เจ•เฉ‡เจ• เจชเฉˆเจŸเจฐเจจ เจฆเฉเจ†เจฐเจพ เจฏเจ•เฉ€เจจเฉ€ เจฌเจฃเจพเจˆ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ):

object SingleNodeImpl extends ZeroServiceImpl[IO]
  with EchoServiceService
  with EchoClientService
  with FiniteDurationLifecycleServiceImpl
{
  type Config = EchoConfig[String] with EchoClientConfig[String] with FiniteDurationLifecycleConfig
}

เจ•เจฟเจฐเจชเจพ เจ•เจฐเจ•เฉ‡ เจงเจฟเจ†เจจ เจฆเจฟเจ“ เจ•เจฟ เจ…เจธเฉ€เจ‚ เจ‡เจธ เจจเฉ‹เจก เจฒเจˆ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ€ เจธเฉฐเจฐเจšเจจเจพ เจฆเฉ€ เจธเจนเฉ€ เจ•เจฟเจธเจฎ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐ เจฐเจนเฉ‡ เจนเจพเจ‚เฅค เจœเฉ‡เจ•เจฐ เจ…เจธเฉ€เจ‚ เจ•เจฟเจธเฉ‡ เจ–เจพเจธ เจธเฉ‡เจตเจพ เจฒเจˆ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ€ เจธเฉฐเจฐเจšเจจเจพ เจ•เจฟเจธเจฎเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจจเฉ‚เฉฐ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจจเจพ เจญเฉเฉฑเจฒ เจœเจพเจ‚เจฆเฉ‡ เจนเจพเจ‚, เจคเจพเจ‚ เจ‡เฉฑเจ• เจธเฉฐเจ•เจฒเจจ เจ—เจฒเจคเฉ€ เจนเฉ‹เจตเฉ‡เจ—เฉ€เฅค เจจเจพเจฒ เจนเฉ€, เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจจเฉ‹เจก เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจจ เจฆเฉ‡ เจฏเฉ‹เจ— เจจเจนเฉ€เจ‚ เจนเฉ‹เจตเจพเจ‚เจ—เฉ‡ เจœเจฆเฉ‹เจ‚ เจคเฉฑเจ• เจ…เจธเฉ€เจ‚ เจธเจพเจฐเฉ‡ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ‡ เจกเฉ‡เจŸเจพ เจฆเฉ‡ เจจเจพเจฒ เจขเฉเจ•เจตเฉ€เจ‚ เจ•เจฟเจธเจฎ เจฆเฉ€ เจ•เฉ‹เจˆ เจตเจธเจคเฉ‚ เจชเฉเจฐเจฆเจพเจจ เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค

เจนเฉ‹เจธเจŸ เจจเจพเจฎ เจฐเฉˆเจœเจผเฉ‹เจฒเจฟเจŠเจธเจผเจจ

เจ‡เฉฑเจ• เจฐเจฟเจฎเฉ‹เจŸ เจนเฉ‹เจธเจŸ เจจเจพเจฒ เจœเฉเฉœเจจ เจฒเจˆ, เจธเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจ…เจธเจฒเฉ€ IP เจเจกเจฐเฉˆเฉฑเจธ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค เจ‡เจน เจธเฉฐเจญเจต เจนเฉˆ เจ•เจฟ เจชเจคเจพ เจฌเจพเจ•เฉ€ เจธเฉฐเจฐเจšเจจเจพ เจจเจพเจฒเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจตเจฟเฉฑเจš เจœเจพเจฃเจฟเจ† เจœเจพเจตเฉ‡เจ—เจพเฅค เจ‡เจธ เจฒเจˆ เจธเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจซเฉฐเจ•เจธเจผเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ เจœเฉ‹ เจจเฉ‹เจก ID เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจชเจคเฉ‡ 'เจคเฉ‡ เจฎเฉˆเจช เจ•เจฐเจฆเจพ เจนเฉˆ:

case class NodeAddress[NodeId](host: Uri.Host)
trait AddressResolver[F[_]] {
  def resolve[NodeId](nodeId: NodeId): F[NodeAddress[NodeId]]
}

เจ‡เจธ เจซเฉฐเจ•เจธเจผเจจ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฆเฉ‡ เจ•เจˆ เจคเจฐเฉ€เจ•เฉ‡ เจนเจจ:

  1. เจœเฉ‡เจ•เจฐ เจกเจฟเจชเจฒเจพเจ‡เจฎเฉˆเจ‚เจŸ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจชเจคเฉ‡ เจธเจพเจจเฉ‚เฉฐ เจœเจพเจฃ เจœเจพเจ‚เจฆเฉ‡ เจนเจจ, เจคเจพเจ‚ เจ…เจธเฉ€เจ‚ เจ‡เจธ เจจเจพเจฒ เจธเจ•เจพเจฒเจพ เจ•เฉ‹เจก เจคเจฟเจ†เจฐ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚
    เจเจกเจฐเฉˆเฉฑเจธ เจ…เจคเฉ‡ เจซเจฟเจฐ เจฌเจฟเจฒเจก เจšเจฒเจพเจ“เฅค เจ‡เจน เจŸเฉˆเจธเจŸเจพเจ‚ เจจเฉ‚เฉฐ เจ•เฉฐเจชเจพเจ‡เจฒ เจ…เจคเฉ‡ เจšเจฒเจพเจเจ—เจพเฅค
    เจ‡เจธ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš, เจซเฉฐเจ•เจธเจผเจจ เจจเฉ‚เฉฐ เจธเจฅเจฟเจฐ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจœเจพเจฃเจฟเจ† เจœเจพเจตเฉ‡เจ—เจพ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจฎเฉˆเจชเจฟเฉฐเจ— เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจ•เฉ‹เจก เจตเจฟเฉฑเจš เจฆเจฐเจธเจพเจ‡เจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ Map[NodeId, NodeAddress].
  2. เจ•เฉเจ เจฎเจพเจฎเจฒเจฟเจ†เจ‚ เจตเจฟเฉฑเจš, เจ…เจธเจฒ เจชเจคเจพ เจจเฉ‹เจก เจฆเฉ‡ เจธเจผเฉเจฐเฉ‚ เจนเฉ‹เจฃ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจนเฉ€ เจœเจพเจฃเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค
    เจ‡เจธ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš, เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• "เจ–เฉ‹เจœ เจธเฉ‡เจตเจพ" เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚ เจœเฉ‹ เจฆเฉ‚เจœเฉ‡ เจจเฉ‹เจกเจพเจ‚ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจšเฉฑเจฒเจฆเฉ€ เจนเฉˆ เจ…เจคเฉ‡ เจธเจพเจฐเฉ‡ เจจเฉ‹เจก เจ‡เจธ เจธเฉ‡เจตเจพ เจจเจพเจฒ เจฐเจœเจฟเจธเจŸเจฐ เจนเฉ‹เจฃเจ—เฉ‡ เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจจเฉ‹เจกเจพเจ‚ เจฆเฉ‡ เจชเจคเจฟเจ†เจ‚ เจฆเฉ€ เจฌเฉ‡เจจเจคเฉ€ เจ•เจฐเจจเจ—เฉ‡เฅค
  3. เจœเฉ‡เจ•เจฐ เจ…เจธเฉ€เจ‚ เจธเฉ‹เจง เจธเจ•เจฆเฉ‡ เจนเจพเจ‚ /etc/hosts, เจซเจฟเจฐ เจคเฉเจธเฉ€เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจคเฉ‹เจ‚ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจนเฉ‹เจธเจŸเจจเจพเจฎเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ (เจœเจฟเจตเฉ‡เจ‚ my-project-main-node ะธ echo-backend) เจ…เจคเฉ‡ เจฌเจธ เจ‡เจนเจจเจพเจ‚ เจจเจพเจฎเจพเจ‚ เจจเฉ‚เฉฐ เจฒเจฟเฉฐเจ• เจ•เจฐเฉ‹
    เจคเฉˆเจจเจพเจคเฉ€ เจฆเฉŒเจฐเจพเจจ IP เจชเจคเจฟเจ†เจ‚ เจฆเฉ‡ เจจเจพเจฒเฅค

เจ‡เจธ เจชเฉ‹เจธเจŸ เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ เจ‡เจนเจจเจพเจ‚ เจฎเจพเจฎเจฒเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจนเฉ‹เจฐ เจตเจฟเจธเจฅเจพเจฐ เจตเจฟเฉฑเจš เจจเจนเฉ€เจ‚ เจตเจฟเจšเจพเจฐเจพเจ‚เจ—เฉ‡เฅค เจธเจพเจกเฉ‡ เจฒเจˆ
เจ‡เฉฑเจ• เจ–เจฟเจกเฉŒเจฃเฉ‡ เจฆเฉ€ เจ‰เจฆเจพเจนเจฐเจจ เจตเจฟเฉฑเจš, เจธเจพเจฐเฉ‡ เจจเฉ‹เจกเจพเจ‚ เจฆเจพ เจ‡เฉฑเจ•เฉ‹ IP เจชเจคเจพ เจนเฉ‹เจตเฉ‡เจ—เจพ - 127.0.0.1.

เจ…เฉฑเจ—เฉ‡, เจ…เจธเฉ€เจ‚ เจตเฉฐเจกเฉ‡ เจธเจฟเจธเจŸเจฎ เจฒเจˆ เจฆเฉ‹ เจตเจฟเจ•เจฒเจชเจพเจ‚ 'เจคเฉ‡ เจตเจฟเจšเจพเจฐ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚:

  1. เจธเจพเจฐเฉ€เจ†เจ‚ เจธเฉ‡เจตเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจจเฉ‹เจก 'เจคเฉ‡ เจฐเฉฑเจ–เจฃเจพเฅค
  2. เจ…เจคเฉ‡ เจตเฉฑเจ–-เจตเฉฑเจ– เจจเฉ‹เจกเจพเจ‚ 'เจคเฉ‡ เจˆเจ•เฉ‹ เจธเฉ‡เจตเจพ เจ…เจคเฉ‡ เจˆเจ•เฉ‹ เจ•เจฒเจพเจ‡เฉฐเจŸ เจฆเฉ€ เจฎเฉ‡เจœเจผเจฌเจพเจจเฉ€ เจ•เจฐ เจฐเจฟเจนเจพ เจนเฉˆเฅค

เจฒเจˆ เจธเฉฐเจฐเจšเจจเจพ เจ‡เฉฑเจ• เจจเฉ‹เจก:

เจธเจฟเฉฐเจ—เจฒ เจจเฉ‹เจก เจธเฉฐเจฐเจšเจจเจพ

object SingleNodeConfig extends EchoConfig[String] 
  with EchoClientConfig[String] with FiniteDurationLifecycleConfig
{
  case object Singleton // identifier of the single node 
  // configuration of server
  type NodeId = Singleton.type
  def nodeId = Singleton

  /** Type safe service port specification. */
  override def portNumber: PortNumber = 8088

  // configuration of client

  /** We'll use the service provided by the same host. */
  def echoServiceDependency = echoService

  override def testMessage: UrlPathElement = "hello"

  def pollInterval: FiniteDuration = 1.second

  // lifecycle controller configuration
  def lifetime: FiniteDuration = 10500.milliseconds // additional 0.5 seconds so that there are 10 requests, not 9.
}

เจ†เจฌเจœเฉˆเจ•เจŸ เจ•เจฒเจพเจ‡เฉฐเจŸ เจ…เจคเฉ‡ เจธเจฐเจตเจฐ เจฆเฉ‹เจตเจพเจ‚ เจฆเฉ€ เจธเฉฐเจฐเจšเจจเจพ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจ‡เฉฑเจ• เจŸเจพเจˆเจฎ-เจŸเฉ‚-เจฒเจพเจˆเจต เจธเฉฐเจฐเจšเจจเจพ เจตเฉ€ เจตเจฐเจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ เจคเจพเจ‚ เจœเฉ‹ เจ…เฉฐเจคเจฐเจพเจฒ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ lifetime เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจจเฉ‚เฉฐ เจ–เจคเจฎ เจ•เจฐเฉ‹. (Ctrl-C เจธเจพเจฐเฉ‡ เจธเจฐเฉ‹เจคเจพเจ‚ เจจเฉ‚เฉฐ เจธเจนเฉ€ เจขเฉฐเจ— เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจฎเฉเจ•เจค เจ•เจฐเจฆเจพ เจนเฉˆเฅค)

เจธเฉฐเจฐเจšเจจเจพ เจ…เจคเฉ‡ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฆเฉ‡ เจ—เฉเจฃเจพเจ‚ เจฆเจพ เจ‡เฉฑเจ•เฉ‹ เจธเฉˆเฉฑเจŸ เจ‡เฉฑเจ• เจธเจฟเจธเจŸเจฎ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจตเจฐเจคเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ เจœเจฟเจธ เจตเจฟเฉฑเจš เจธเจผเจพเจฎเจฒ เจนเจจ เจฆเฉ‹ เจตเฉฑเจ–เจฐเฉ‡ เจจเฉ‹เจก:

เจฆเฉ‹ เจจเฉ‹เจก เจธเฉฐเจฐเจšเจจเจพ

  object NodeServerConfig extends EchoConfig[String] with SigTermLifecycleConfig
  {
    type NodeId = NodeIdImpl

    def nodeId = NodeServer

    override def portNumber: PortNumber = 8080
  }

  object NodeClientConfig extends EchoClientConfig[String] with FiniteDurationLifecycleConfig
  {
    // NB! dependency specification
    def echoServiceDependency = NodeServerConfig.echoService

    def pollInterval: FiniteDuration = 1.second

    def lifetime: FiniteDuration = 10500.milliseconds // additional 0.5 seconds so that there are 10 request, not 9.

    def testMessage: String = "dolly"
  }

เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ! เจงเจฟเจ†เจจ เจฆเจฟเจ“ เจ•เจฟ เจธเฉ‡เจตเจพเจตเจพเจ‚ เจ•เจฟเจตเฉ‡เจ‚ เจœเฉเฉœเฉ€เจ†เจ‚ เจนเฉ‹เจˆเจ†เจ‚ เจนเจจเฅค เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจจเฉ‹เจก เจฆเฉเจ†เจฐเจพ เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเฉ€ เจธเฉ‡เจตเจพ เจจเฉ‚เฉฐ เจ•เจฟเจธเฉ‡ เจนเฉ‹เจฐ เจจเฉ‹เจก เจฆเฉ€ เจจเจฟเจฐเจญเจฐเจคเจพ เจตเจฟเจงเฉ€ เจฆเฉ‡ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค เจ•เฉฐเจชเจพเจˆเจฒเจฐ เจฆเฉเจ†เจฐเจพ เจจเจฟเจฐเจญเจฐเจคเจพ เจ•เจฟเจธเจฎ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจชเฉเจฐเฉ‹เจŸเฉ‹เจ•เฉ‹เจฒ เจฆเฉ€ เจ•เจฟเจธเจฎ เจธเจผเจพเจฎเจฟเจฒ เจนเฉˆเฅค เจœเจฆเฉ‹เจ‚ เจšเจฒเจพเจ‡เจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจจเจฟเจฐเจญเจฐเจคเจพ เจตเจฟเฉฑเจš เจธเจนเฉ€ เจŸเฉ€เจšเจพ เจจเฉ‹เจก ID เจธเจผเจพเจฎเจฒ เจนเฉ‹เจตเฉ‡เจ—เจพเฅค เจ‡เจธ เจธเจ•เฉ€เจฎ เจฒเจˆ เจงเฉฐเจจเจตเจพเจฆ, เจ…เจธเฉ€เจ‚ เจชเฉ‹เจฐเจŸ เจจเฉฐเจฌเจฐ เจจเฉ‚เฉฐ เจฌเจฟเจฒเจ•เฉเจฒ เจ‡เฉฑเจ• เจตเจพเจฐ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจนเจฎเฉ‡เจธเจผเจพ เจธเจนเฉ€ เจชเฉ‹เจฐเจŸ เจฆเจพ เจนเจตเจพเจฒเจพ เจฆเฉ‡เจฃ เจฆเฉ€ เจ—เจฐเฉฐเจŸเฉ€ เจฆเจฟเฉฑเจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆเฅค

เจฆเฉ‹ เจธเจฟเจธเจŸเจฎ เจจเฉ‹เจกเจพเจ‚ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจเจพ

เจ‡เจธ เจธเฉฐเจฐเจšเจจเจพ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจฌเจฟเจจเจพเจ‚ เจ•เจฟเจธเฉ‡ เจฌเจฆเจฒเจพเจ… เจฆเฉ‡ เจ‰เจนเฉ€ เจธเฉ‡เจตเจพ เจฒเจพเจ—เฉ‚เจ•เจฐเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค เจซเจฐเจ• เจธเจฟเจฐเจซ เจ‡เจน เจนเฉˆ เจ•เจฟ เจนเฉเจฃ เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจฆเฉ‹ เจตเจธเจคเฉ‚เจ†เจ‚ เจนเจจ เจœเฉ‹ เจธเฉ‡เจตเจพเจตเจพเจ‚ เจฆเฉ‡ เจตเฉฑเจ–-เจตเฉฑเจ– เจธเฉˆเฉฑเจŸเจพเจ‚ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจฆเฉ€เจ†เจ‚ เจนเจจ:

  object TwoJvmNodeServerImpl extends ZeroServiceImpl[IO] with EchoServiceService with SigIntLifecycleServiceImpl {
    type Config = EchoConfig[String] with SigTermLifecycleConfig
  }

  object TwoJvmNodeClientImpl extends ZeroServiceImpl[IO] with EchoClientService with FiniteDurationLifecycleServiceImpl {
    type Config = EchoClientConfig[String] with FiniteDurationLifecycleConfig
  }

เจชเจนเจฟเจฒเจพ เจจเฉ‹เจก เจธเจฐเจตเจฐ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ•เฉ‡เจตเจฒ เจธเจฐเจตเจฐ เจธเฉฐเจฐเจšเจจเจพ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค เจฆเฉ‚เจœเจพ เจจเฉ‹เจก เจ•เจฒเจพเจ‡เฉฐเจŸ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจธเฉฐเจฐเจšเจจเจพ เจฆเฉ‡ เจตเฉฑเจ–เจฐเฉ‡ เจนเจฟเฉฑเจธเฉ‡ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจจเจพเจฒ เจนเฉ€ เจฆเฉ‹เจตเฉ‡เจ‚ เจจเฉ‹เจกเจพเจ‚ เจจเฉ‚เฉฐ เจœเฉ€เจตเจจ เจญเจฐ เจชเฉเจฐเจฌเฉฐเจงเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค เจธเจฐเจตเจฐ เจจเฉ‹เจก เจ…เจฃเจฎเจฟเฉฑเจฅเฉ‡ เจธเจฎเฉ‡เจ‚ เจคเฉฑเจ• เจšเฉฑเจฒเจฆเจพ เจนเฉˆ เจœเจฆเฉ‹เจ‚ เจคเฉฑเจ• เจ‡เจธเจจเฉ‚เฉฐ เจฐเฉ‹เจ•เจฟเจ† เจจเจนเฉ€เจ‚ เจœเจพเจ‚เจฆเจพ SIGTERM'om, เจ…เจคเฉ‡ เจ•เจฒเจพเจ‡เฉฐเจŸ เจจเฉ‹เจก เจ•เฉเจ เจธเจฎเฉ‡เจ‚ เจฌเจพเจ…เจฆ เจธเจฎเจพเจชเจค เจนเฉ‹ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจธเฉ€.เจเจฎ. เจฒเจพเจ‚เจšเจฐ เจเจช.

เจ†เจฎ เจตเจฟเจ•เจพเจธ เจฆเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ†

เจ†เจ“ เจฆเฉ‡เจ–เฉ€เจ เจ•เจฟ เจ‡เจน เจธเฉฐเจฐเจšเจจเจพ เจชเจนเฉเฉฐเจš เจธเจฎเฉเฉฑเจšเฉ€ เจตเจฟเจ•เจพเจธ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจชเฉเจฐเจญเจพเจตเจฟเจค เจ•เจฐเจฆเฉ€ เจนเฉˆเฅค

เจธเฉฐเจฐเจšเจจเจพ เจจเฉ‚เฉฐ เจฌเจพเจ•เฉ€ เจ•เฉ‹เจก เจฆเฉ‡ เจจเจพเจฒ เจ•เฉฐเจชเจพเจ‡เจฒ เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เจ—เจพ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจ†เจฐเจŸเฉ€เจซเฉˆเจ•เจŸ (.jar) เจคเจฟเจ†เจฐ เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เจ—เจพเฅค เจธเฉฐเจฐเจšเจจเจพ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจตเฉฑเจ–เจฐเฉ€ เจ†เจฐเจŸเฉ€เจซเฉˆเจ•เจŸ เจตเจฟเฉฑเจš เจชเจพเจ‰เจฃเจพ เจธเจฎเจเจฆเจพเจฐ เจœเจพเจชเจฆเจพ เจนเฉˆเฅค เจ‡เจน เจ‡เจธ เจฒเจˆ เจนเฉˆ เจ•เจฟเจ‰เจ‚เจ•เจฟ เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจ‡เฉฑเจ•เฉ‹ เจ•เฉ‹เจก เจฆเฉ‡ เจ†เจงเจพเจฐ 'เจคเฉ‡ เจ•เจˆ เจธเฉฐเจฐเจšเจจเจพเจตเจพเจ‚ เจนเฉ‹ เจธเจ•เจฆเฉ€เจ†เจ‚ เจนเจจเฅค เจฆเฉเจฌเจพเจฐเจพ เจซเจฟเจฐ, เจตเฉฑเจ–-เจตเฉฑเจ– เจธเฉฐเจฐเจšเจจเจพ เจธเจผเจพเจ–เจพเจตเจพเจ‚ เจจเจพเจฒ เจธเฉฐเจฌเฉฐเจงเจฟเจค เจ•เจฒเจพเจ•เฉเจฐเจฟเจคเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจคเจฟเจ†เจฐ เจ•เจฐเจจเจพ เจธเฉฐเจญเจต เจนเฉˆเฅค เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€เจ†เจ‚ เจฆเฉ‡ เจ–เจพเจธ เจธเฉฐเจธเจ•เจฐเจฃเจพเจ‚ 'เจคเฉ‡ เจจเจฟเจฐเจญเจฐเจคเจพ เจธเฉฐเจฐเจšเจจเจพ เจฆเฉ‡ เจจเจพเจฒ เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ, เจ…เจคเฉ‡ เจœเจฆเฉ‹เจ‚ เจตเฉ€ เจ…เจธเฉ€เจ‚ เจธเฉฐเจฐเจšเจจเจพ เจฆเฉ‡ เจ‰เจธ เจธเฉฐเจธเจ•เจฐเจฃ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฆเจพ เจซเฉˆเจธเจฒเจพ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ เจคเจพเจ‚ เจ‡เจน เจธเฉฐเจธเจ•เจฐเจฃ เจนเจฎเฉ‡เจธเจผเจพ เจฒเจˆ เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจนเฉ‹ เจœเจพเจ‚เจฆเฉ‡ เจนเจจเฅค

เจ•เฉ‹เจˆ เจตเฉ€ เจธเฉฐเจฐเจšเจจเจพ เจคเจฌเจฆเฉ€เจฒเฉ€ เจ•เฉ‹เจก เจคเจฌเจฆเฉ€เจฒเฉ€ เจตเจฟเฉฑเจš เจฌเจฆเจฒ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆเฅค เจ…เจคเฉ‡ เจ‡เจธ เจฒเจˆ, เจนเจฐเฉ‡เจ•
เจคเจฌเจฆเฉ€เจฒเฉ€ เจจเฉ‚เฉฐ เจ†เจฎ เจ—เฉเจฃเจตเฉฑเจคเจพ เจญเจฐเฉ‹เจธเจพ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจฆเฉเจ†เจฐเจพ เจ•เจตเจฐ เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เจ—เจพ:

เจฌเฉฑเจ— เจŸเจฐเฉˆเจ•เจฐ เจตเจฟเฉฑเจš เจŸเจฟเจ•เจŸ -> PR -> เจธเจฎเฉ€เจ–เจฟเจ† -> เจธเฉฐเจฌเฉฐเจงเจฟเจค เจธเจผเจพเจ–เจพเจตเจพเจ‚ เจจเจพเจฒ เจฎเจฟเจฒเจพเจ“ ->
เจเจ•เฉ€เจ•เจฐเจฃ -> เจคเฉˆเจจเจพเจคเฉ€

เจ•เฉฐเจชเจพเจ‡เจฒ เจ•เฉ€เจคเฉ€ เจธเฉฐเจฐเจšเจจเจพ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฆเฉ‡ เจฎเฉเฉฑเจ– เจจเจคเฉ€เจœเฉ‡ เจนเจจ:

  1. เจตเจฟเจคเจฐเจฟเจค เจธเจฟเจธเจŸเจฎ เจฆเฉ‡ เจธเจพเจฐเฉ‡ เจจเฉ‹เจกเจพเจ‚ เจตเจฟเฉฑเจš เจธเฉฐเจฐเจšเจจเจพ เจ‡เจ•เจธเจพเจฐ เจนเฉ‹เจตเฉ‡เจ—เฉ€เฅค เจ‡เจธ เจคเฉฑเจฅ เจฆเฉ‡ เจ•เจพเจฐเจจ เจ•เจฟ เจธเจพเจฐเฉ‡ เจจเฉ‹เจก เจ‡เฉฑเจ• เจธเจฐเฉ‹เจค เจคเฉ‹เจ‚ เจ‡เฉฑเจ•เฉ‹ เจœเจฟเจนเฉ€ เจธเฉฐเจฐเจšเจจเจพ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจฆเฉ‡ เจนเจจ.

  2. เจธเจฟเจฐเจซ เจ‡เฉฑเจ• เจจเฉ‹เจก เจตเจฟเฉฑเจš เจธเฉฐเจฐเจšเจจเจพ เจจเฉ‚เฉฐ เจฌเจฆเจฒเจฃเจพ เจฎเฉเจธเจผเจ•เจฒ เจนเฉˆเฅค เจ‡เจธ เจฒเจˆ, "เจธเฉฐเจฐเจšเจจเจพ เจตเจนเจฟเจฃ" เจฆเฉ€ เจธเฉฐเจญเจพเจตเจจเจพ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค

  3. เจธเฉฐเจฐเจšเจจเจพ เจตเจฟเฉฑเจš เจ›เฉ‹เจŸเฉ€เจ†เจ‚ เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจ•เจฐเจจเจพ เจตเจงเฉ‡เจฐเฉ‡ เจฎเฉเจธเจผเจ•เจฒ เจนเฉ‹ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค

  4. เจœเจผเจฟเจ†เจฆเจพเจคเจฐ เจธเฉฐเจฐเจšเจจเจพ เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจธเจฎเฉเฉฑเจšเฉ€ เจตเจฟเจ•เจพเจธ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจฆเฉ‡ เจนเจฟเฉฑเจธเฉ‡ เจตเจœเฉ‹เจ‚ เจนเฉ‹เจฃเจ—เฉ€เจ†เจ‚ เจ…เจคเฉ‡ เจธเจฎเฉ€เจ–เจฟเจ† เจฆเฉ‡ เจ…เจงเฉ€เจจ เจนเฉ‹เจฃเจ—เฉ€เจ†เจ‚เฅค

เจ•เฉ€ เจฎเฉˆเจจเฉ‚เฉฐ เจ‰เจคเจชเจพเจฆเจจ เจธเฉฐเจฐเจšเจจเจพ เจจเฉ‚เฉฐ เจธเจŸเฉ‹เจฐ เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจตเฉฑเจ–เจฐเฉ€ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ? เจ‡เจธ เจธเฉฐเจฐเจšเจจเจพ เจตเจฟเฉฑเจš เจชเจพเจธเจตเจฐเจก เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจธเฉฐเจตเฉ‡เจฆเจจเจธเจผเฉ€เจฒ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจนเฉ‹ เจธเจ•เจฆเฉ€ เจนเฉˆ เจœเจฟเจธ เจคเฉฑเจ• เจ…เจธเฉ€เจ‚ เจชเจนเฉเฉฐเจš เจจเฉ‚เฉฐ เจธเฉ€เจฎเจค เจ•เจฐเจจเจพ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเจพเจ‚เฅค เจ‡เจธ เจฆเฉ‡ เจ†เจงเจพเจฐ 'เจคเฉ‡, เจ…เฉฐเจคเจฟเจฎ เจธเฉฐเจฐเจšเจจเจพ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจตเฉฑเจ–เจฐเฉ‡ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจธเจŸเฉ‹เจฐ เจ•เจฐเจจ เจฆเจพ เจฎเจคเจฒเจฌ เจœเจพเจชเจฆเจพ เจนเฉˆเฅค เจคเฉเจธเฉ€เจ‚ เจธเฉฐเจฐเจšเจจเจพ เจจเฉ‚เฉฐ เจฆเฉ‹ เจนเจฟเฉฑเจธเจฟเจ†เจ‚ เจตเจฟเฉฑเจš เจตเฉฐเจก เจธเจ•เจฆเฉ‡ เจนเฉ‹โ€”เจ‡เฉฑเจ• เจตเจฟเฉฑเจš เจœเจจเจคเจ• เจคเฉŒเจฐ 'เจคเฉ‡ เจชเจนเฉเฉฐเจšเจฏเฉ‹เจ— เจธเฉฐเจฐเจšเจจเจพ เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจตเจฟเฉฑเจš เจชเฉเจฐเจคเจฟเจฌเฉฐเจงเจฟเจค เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚ เจธเจผเจพเจฎเจฒ เจนเจจเฅค เจ‡เจน เจœเจผเจฟเจ†เจฆเจพเจคเจฐ เจกเจฟเจตเฉˆเจฒเจชเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจ†เจฎ เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚ เจคเฉฑเจ• เจชเจนเฉเฉฐเจš เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเฉ‡เจตเฉ‡เจ—เจพเฅค เจกเจฟเจซเฉŒเจฒเจŸ เจฎเฉเฉฑเจฒเจพเจ‚ เจตเจพเจฒเฉ‡ เจ‡เฉฐเจŸเจฐเจฎเฉ€เจกเฉ€เจเจŸ เจ—เฉเจฃเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ‡เจน เจตเจฟเจ›เฉ‹เฉœเจพ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจเจพ เจ†เจธเจพเจจ เจนเฉˆเฅค

เจธเฉฐเจญเจต เจญเจฟเฉฐเจจเจคเจพเจตเจพเจ‚

เจ†เจ‰ เจธเฉฐเจ•เจฒเจฟเจค เจธเฉฐเจฐเจšเจจเจพ เจฆเฉ€ เจคเฉเจฒเจจเจพ เจ•เฉเจ เจ†เจฎ เจตเจฟเจ•เจฒเจชเจพเจ‚ เจจเจพเจฒ เจ•เจฐเจจ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเฉ€เจ:

  1. เจŸเฉ€เจšเฉ‡ เจฆเฉ€ เจฎเจธเจผเฉ€เจจ 'เจคเฉ‡ เจŸเฉˆเจ•เจธเจŸ เจซเจพเจ‡เจฒ.
  2. เจ•เฉ‡เจ‚เจฆเจฐเฉ€เจ•เฉเจฐเจฟเจค เจ•เฉเฉฐเจœเฉ€-เจฎเฉเฉฑเจฒ เจธเจŸเฉ‹เจฐ (etcd/zookeeper).
  3. เจชเฉเจฐเฉ‹เจธเฉˆเจธ เจ•เฉฐเจชเฉ‹เจจเฉˆเจ‚เจŸเจธ เจœเฉ‹ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจจเฉ‚เฉฐ เจฐเฉ€เจธเจŸเจพเจฐเจŸ เจ•เฉ€เจคเฉ‡ เจฌเจฟเจจเจพเจ‚ เจฎเฉเฉœ เจธเฉฐเจฐเจšเจฟเจค/เจฎเฉเฉœ-เจธเจผเฉเจฐเฉ‚ เจ•เฉ€เจคเฉ‡ เจœเจพ เจธเจ•เจฆเฉ‡ เจนเจจเฅค
  4. เจ†เจฐเจŸเฉ€เจซเฉˆเจ•เจŸ เจ…เจคเฉ‡ เจธเฉฐเจธเจ•เจฐเจฃ เจจเจฟเจฏเฉฐเจคเจฐเจฃ เจคเฉ‹เจ‚ เจฌเจพเจนเจฐ เจธเฉฐเจฐเจšเจจเจพ เจจเฉ‚เฉฐ เจธเจŸเฉ‹เจฐ เจ•เจฐเจจเจพเฅค

เจŸเฉˆเจ•เจธเจŸ เจซเจพเจˆเจฒเจพเจ‚ เจ›เฉ‹เจŸเฉ€เจ†เจ‚ เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจฒเจšเจ•เจคเจพ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเฉ€เจ†เจ‚ เจนเจจเฅค เจธเจฟเจธเจŸเจฎ เจชเฉเจฐเจฌเฉฐเจงเจ• เจฐเจฟเจฎเฉ‹เจŸ เจจเฉ‹เจก เจตเจฟเฉฑเจš เจฒเฉŒเจ—เจ‡เจจ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆ, เจ‰เจšเจฟเจค เจซเจพเจˆเจฒเจพเจ‚ เจตเจฟเฉฑเจš เจฌเจฆเจฒเจพเจ… เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจธเฉ‡เจตเจพ เจจเฉ‚เฉฐ เจฎเฉเฉœ เจšเจพเจฒเฉ‚ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจตเฉฑเจกเฉ‡ เจธเจฟเจธเจŸเจฎเจพเจ‚ เจฒเจˆ, เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจ…เจœเจฟเจนเฉ€ เจฒเจšเจ•เจคเจพ เจซเจพเจ‡เจฆเฉ‡เจฎเฉฐเจฆ เจจเจนเฉ€เจ‚ เจนเฉ‹ เจธเจ•เจฆเฉ€เฅค เจ•เฉ€เจคเฉ€เจ†เจ‚ เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจนเฉ‹เจฐ เจธเจฟเจธเจŸเจฎเจพเจ‚ เจตเจฟเฉฑเจš เจ•เฉ‹เจˆ เจจเจฟเจธเจผเจพเจจ เจจเจนเฉ€เจ‚ เจ›เฉฑเจกเจฆเฉ€เจ†เจ‚เฅค เจ•เฉ‹เจˆ เจตเฉ€ เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจฆเฉ€ เจธเจฎเฉ€เจ–เจฟเจ† เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเจพเฅค เจ‡เจน เจชเจคเจพ เจฒเจ—เจพเจ‰เจฃเจพ เจฎเฉเจธเจผเจ•เจฒ เจนเฉˆ เจ•เจฟ เจ…เจธเจฒ เจตเจฟเฉฑเจš เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจ•เจฟเจธ เจจเฉ‡ เจ•เฉ€เจคเฉ€เจ†เจ‚ เจ…เจคเฉ‡ เจ•เจฟเจธ เจ•เจพเจฐเจจ เจฒเจˆเฅค เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจฆเฉ€ เจœเจพเจ‚เจš เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€เฅค เจœเฉ‡เจ•เจฐ เจธเจฟเจธเจŸเจฎ เจตเฉฐเจกเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจคเจพเจ‚ เจชเฉเจฐเจธเจผเจพเจธเจ• เจนเฉ‹เจฐ เจจเฉ‹เจกเจพเจ‚ 'เจคเฉ‡ เจ…เจจเฉเจธเจพเจฐเฉ€ เจคเจฌเจฆเฉ€เจฒเฉ€ เจ•เจฐเจจเจพ เจญเฉเฉฑเจฒ เจธเจ•เจฆเจพ เจนเฉˆเฅค

(เจ‡เจน เจตเฉ€ เจจเฉ‹เจŸ เจ•เฉ€เจคเจพ เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ เจ•เจฟ เจ•เฉฐเจชเจพเจ‡เจฒ เจ•เฉ€เจคเฉ€ เจธเฉฐเจฐเจšเจจเจพ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจจเจพเจฒ เจญเจตเจฟเฉฑเจ– เจตเจฟเฉฑเจš เจŸเฉˆเจ•เจธเจŸ เจซเจพเจˆเจฒเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเฉ€ เจธเฉฐเจญเจพเจตเจจเจพ เจฌเฉฐเจฆ เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค เจ‡เจน เจ‡เฉฑเจ• เจชเจพเจฐเจธเจฐ เจ…เจคเฉ‡ เจตเฉˆเจฒเฉ€เจกเฉ‡เจŸเจฐ เจจเฉ‚เฉฐ เจœเฉ‹เฉœเจจ เจฒเจˆ เจ•เจพเจซเฉ€ เจนเฉ‹เจตเฉ‡เจ—เจพ เจœเฉ‹ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจฆเฉ‡ เจธเจฎเจพเจจ เจ•เจฟเจธเจฎ เจฆเจพ เจ‰เจคเจชเจพเจฆเจจ เจ•เจฐเจฆเจพ เจนเฉˆเฅค Config, เจ…เจคเฉ‡ เจคเฉเจธเฉ€เจ‚ เจŸเฉˆเจ•เจธเจŸ เจซเจพเจˆเจฒเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค เจ‡เจน เจคเฉเจฐเฉฐเจค เจ‡เจธ เจ—เฉฑเจฒ เจฆเฉ€ เจชเจพเจฒเจฃเจพ เจ•เจฐเจฆเจพ เจนเฉˆ เจ•เจฟ เจ•เฉฐเจชเจพเจ‡เจฒ เจ•เฉ€เจคเฉ€ เจธเฉฐเจฐเจšเจจเจพ เจตเจพเจฒเฉ‡ เจธเจฟเจธเจŸเจฎ เจฆเฉ€ เจ—เฉเฉฐเจเจฒเจคเจพ เจŸเฉˆเจ•เจธเจŸ เจซเจพเจˆเจฒเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจตเจพเจฒเฉ‡ เจธเจฟเจธเจŸเจฎ เจฆเฉ€ เจ—เฉเฉฐเจเจฒเจคเจพ เจจเจพเจฒเฉ‹เจ‚ เจ•เฉเจ เจ˜เฉฑเจŸ เจนเฉˆ, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจŸเฉˆเจ•เจธเจŸ เจซเจพเจˆเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจตเจพเจงเฉ‚ เจ•เฉ‹เจก เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค)

เจ‡เฉฑเจ• เจ•เฉ‡เจ‚เจฆเจฐเฉ€เจ•เฉเจฐเจฟเจค เจ•เฉเฉฐเจœเฉ€-เจฎเฉเฉฑเจฒ เจธเจŸเฉ‹เจฐ เจ‡เฉฑเจ• เจตเจฟเจคเจฐเจฟเจค เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเฉ‡ เจฎเฉˆเจŸเจพ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจตเฉฐเจกเจฃ เจฒเจˆ เจ‡เฉฑเจ• เจตเจงเฉ€เจ† เจตเจฟเจงเฉ€ เจนเฉˆเฅค เจธเจพเจจเฉ‚เฉฐ เจ‡เจน เจซเฉˆเจธเจฒเจพ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ เจ•เจฟ เจธเฉฐเจฐเจšเจจเจพ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจ•เฉ€ เจนเจจ เจ…เจคเฉ‡ เจธเจฟเจฐเจซเจผ เจกเฉ‡เจŸเจพ เจ•เฉ€ เจนเจจเฅค เจ†เจ“ เจ‡เฉฑเจ• เจซเฉฐเจ•เจธเจผเจจ เจ•เจฐเฉ€เจ C => A => B, เจ…เจคเฉ‡ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ C เจฌเจนเฉเจค เจ˜เฉฑเจŸ เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚, เจ…เจคเฉ‡ เจกเฉ‡เจŸเจพ A - เจ…เจ•เจธเจฐ. เจ‡เจธ เจฎเจพเจฎเจฒเฉ‡ เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ เจ•เจนเจฟ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ C - เจธเฉฐเจฐเจšเจจเจพ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ, เจ…เจคเฉ‡ A - เจกเจพเจŸเจพเฅค เจ‡เจน เจœเจพเจชเจฆเจพ เจนเฉˆ เจ•เจฟ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐเฉ‡เจธเจผเจจ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจกเฉ‡เจŸเจพ เจจเจพเจฒเฉ‹เจ‚ เจตเฉฑเจ–เจฐเฉ‡ เจนเฉเฉฐเจฆเฉ‡ เจนเจจ เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ‰เจน เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจกเฉ‡เจŸเจพ เจจเจพเจฒเฉ‹เจ‚ เจ˜เฉฑเจŸ เจตเจพเจฐ เจฌเจฆเจฒเจฆเฉ‡ เจนเจจเฅค เจจเจพเจฒ เจนเฉ€, เจกเฉ‡เจŸเจพ เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจ‡เฉฑเจ• เจธเจฐเฉ‹เจค เจคเฉ‹เจ‚ เจ†เจ‰เจ‚เจฆเจพ เจนเฉˆ (เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจคเฉ‹เจ‚), เจ…เจคเฉ‡ เจธเฉฐเจฐเจšเจจเจพ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจฆเฉ‚เจœเฉ‡ เจคเฉ‹เจ‚ (เจธเจฟเจธเจŸเจฎ เจชเฉเจฐเจธเจผเจพเจธเจ• เจคเฉ‹เจ‚)เฅค

เจœเฉ‡เจ•เจฐ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจจเฉ‚เฉฐ เจฐเฉ€เจธเจŸเจพเจฐเจŸ เจ•เฉ€เจคเฉ‡ เจฌเจฟเจจเจพเจ‚ เจ˜เฉฑเจŸ เจนเฉ€ เจฌเจฆเจฒเจฆเฉ‡ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจ…เฉฑเจชเจกเฉ‡เจŸ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ, เจคเจพเจ‚ เจ‡เจน เจ…เจ•เจธเจฐ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจฆเฉ€ เจชเฉ‡เจšเฉ€เจฆเจ—เฉ€ เจฆเจพ เจ•เจพเจฐเจจ เจฌเจฃ เจธเจ•เจฆเจพ เจนเฉˆ, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจธเจพเจจเฉ‚เฉฐ เจ•เจฟเจธเฉ‡ เจคเจฐเฉเจนเจพเจ‚ เจฎเจพเจชเจฆเฉฐเจกเจพเจ‚ เจจเฉ‚เฉฐ เจกเจฟเจฒเฉ€เจตเจฐ เจ•เจฐเจจ, เจธเจŸเฉ‹เจฐ เจ•เจฐเจจ, เจชเจพเจฐเจธ เจ•เจฐเจจ เจ…เจคเฉ‡ เจœเจพเจ‚เจš เจ•เจฐเจจ เจ…เจคเฉ‡ เจ—เจฒเจค เจฎเฉเฉฑเจฒเจพเจ‚ เจฆเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจชเจตเฉ‡เจ—เฉ€เฅค เจ‡เจธ เจฒเจˆ, เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจฆเฉ€ เจ—เฉเฉฐเจเจฒเจคเจพ เจจเฉ‚เฉฐ เจ˜เจŸเจพเจ‰เจฃ เจฆเฉ‡ เจฆเฉเจฐเจฟเจธเจผเจŸเฉ€เจ•เฉ‹เจฃ เจคเฉ‹เจ‚, เจ‡เจน เจฎเจพเจชเจฆเฉฐเจกเจพเจ‚ เจฆเฉ€ เจธเฉฐเจ–เจฟเจ† เจจเฉ‚เฉฐ เจ˜เจŸเจพเจ‰เจฃเจพ เจธเจฎเจเจฆเจพ เจนเฉˆ เจœเฉ‹ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจฆเฉ‡ เจธเฉฐเจšเจพเจฒเจจ เจฆเฉŒเจฐเจพเจจ เจฌเจฆเจฒ เจธเจ•เจฆเฉ‡ เจนเจจ (เจœเจพเจ‚ เจ…เจœเจฟเจนเฉ‡ เจฎเจพเจชเจฆเฉฐเจกเจพเจ‚ เจฆเจพ เจธเจฎเจฐเจฅเจจ เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเฉ‡)เฅค

เจ‡เจธ เจชเฉ‹เจธเจŸ เจฆเฉ‡ เจ‰เจฆเฉ‡เจธเจผเจพเจ‚ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจธเจฅเจฟเจฐ เจ…เจคเฉ‡ เจ—เจคเฉ€เจธเจผเฉ€เจฒ เจฎเจพเจชเจฆเฉฐเจกเจพเจ‚ เจตเจฟเฉฑเจš เจซเจฐเจ• เจ•เจฐเจพเจ‚เจ—เฉ‡เฅค เจœเฉ‡ เจธเฉ‡เจตเจพ เจฆเฉ‡ เจคเจฐเจ• เจจเฉ‚เฉฐ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจฆเฉ‡ เจธเฉฐเจšเจพเจฒเจจ เจฆเฉŒเจฐเจพเจจ เจฎเจพเจชเจฆเฉฐเจก เจฌเจฆเจฒเจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ, เจคเจพเจ‚ เจ…เจธเฉ€เจ‚ เจ…เจœเจฟเจนเฉ‡ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจ—เจคเฉ€เจธเจผเฉ€เจฒ เจ•เจนเจพเจ‚เจ—เฉ‡เฅค เจจเจนเฉ€เจ‚ เจคเจพเจ‚ เจตเจฟเจ•เจฒเจช เจธเจฅเจฟเจฐ เจนเจจ เจ…เจคเฉ‡ เจ•เฉฐเจชเจพเจ‡เจฒ เจ•เฉ€เจคเฉ€ เจธเฉฐเจฐเจšเจจเจพ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจธเฉฐเจฐเจšเจฟเจค เจ•เฉ€เจคเฉ‡ เจœเจพ เจธเจ•เจฆเฉ‡ เจนเจจเฅค เจ—เจคเฉ€เจธเจผเฉ€เจฒ เจชเฉเจจเจฐ-เจธเฉฐเจฐเจšเจจเจพ เจฒเจˆ, เจธเจพเจจเฉ‚เฉฐ เจจเจตเฉ‡เจ‚ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจฆเฉ‡ เจญเจพเจ—เจพเจ‚ เจจเฉ‚เฉฐ เจฎเฉเฉœ-เจšเจพเจฒเฉ‚ เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจตเจฟเจงเฉ€ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉ‹ เจธเจ•เจฆเฉ€ เจนเฉˆ, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจ“เจชเจฐเฉ‡เจŸเจฟเฉฐเจ— เจธเจฟเจธเจŸเจฎ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ†เจตเจพเจ‚ เจจเฉ‚เฉฐ เจฎเฉเฉœ-เจธเจผเฉเจฐเฉ‚ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค (เจธเจพเจกเฉ€ เจฐเจพเจ เจตเจฟเฉฑเจš, เจฐเฉ€เจ…เจฒ-เจŸเจพเจˆเจฎ เจชเฉเจจเจฐ-เจธเฉฐเจฐเจšเจจเจพ เจคเฉ‹เจ‚ เจฌเจšเจฃ เจฆเฉ€ เจธเจฒเจพเจน เจฆเจฟเฉฑเจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ‡เจน เจธเจฟเจธเจŸเจฎ เจฆเฉ€ เจœเจŸเจฟเจฒเจคเจพ เจจเฉ‚เฉฐ เจตเจงเจพเจ‰เจ‚เจฆเจพ เจนเฉˆเฅค เจœเฉ‡เจ•เจฐ เจธเฉฐเจญเจต เจนเฉ‹เจตเฉ‡, เจคเจพเจ‚ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ†เจตเจพเจ‚ เจจเฉ‚เฉฐ เจฎเฉเฉœ เจšเจพเจฒเฉ‚ เจ•เจฐเจจ เจฒเจˆ เจฎเจฟเจ†เจฐเฉ€ OS เจธเจฎเจฐเฉฑเจฅเจพเจตเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ เจฌเจฟเจนเจคเจฐ เจนเฉˆเฅค)

เจธเจฅเจฟเจฐ เจธเฉฐเจฐเจšเจจเจพ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเจพ เจ‡เฉฑเจ• เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจชเจนเจฟเจฒเฉ‚ เจœเฉ‹ เจฒเฉ‹เจ•เจพเจ‚ เจจเฉ‚เฉฐ เจ—เจคเฉ€เจธเจผเฉ€เจฒ เจชเฉเจจเจฐ-เจธเฉฐเจฐเจšเจจเจพ เจฌเจพเจฐเฉ‡ เจตเจฟเจšเจพเจฐ เจ•เจฐเจฆเจพ เจนเฉˆ, เจ‰เจน เจธเจฎเจพเจ‚ เจนเฉˆ เจœเฉ‹ เจธเจฟเจธเจŸเจฎ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจธเฉฐเจฐเจšเจจเจพ เจ…เฉฑเจชเจกเฉ‡เจŸ (เจกเจพเจŠเจจเจŸเจพเจˆเจฎ) เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจฐเฉ€เจฌเฉ‚เจŸ เจ•เจฐเจจ เจตเจฟเฉฑเจš เจฒเฉฑเจ—เจฆเจพ เจนเฉˆเฅค เจตเจพเจธเจคเจต เจตเจฟเฉฑเจš, เจœเฉ‡เจ•เจฐ เจธเจพเจจเฉ‚เฉฐ เจธเจฅเจฟเจฐ เจธเฉฐเจฐเจšเจจเจพ เจตเจฟเฉฑเจš เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ, เจคเจพเจ‚ เจธเจพเจจเฉ‚เฉฐ เจจเจตเฉ‡เจ‚ เจฎเฉเฉฑเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจชเฉเจฐเจญเจพเจตเฉ€ เจ•เจฐเจจ เจฒเจˆ เจธเจฟเจธเจŸเจฎ เจจเฉ‚เฉฐ เจฎเฉเฉœ เจšเจพเจฒเฉ‚ เจ•เจฐเจจเจพ เจชเจตเฉ‡เจ—เจพเฅค เจตเฉฑเจ–-เจตเฉฑเจ– เจชเฉเจฐเจฃเจพเจฒเฉ€เจ†เจ‚ เจฒเจˆ เจกเจพเจŠเจจเจŸเจพเจˆเจฎ เจธเจฎเฉฑเจธเจฟเจ† เจ—เฉฐเจญเฉ€เจฐเจคเจพ เจตเจฟเฉฑเจš เจตเฉฑเจ–เจฐเฉ€ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค เจ•เฉเจ เจฎเจพเจฎเจฒเจฟเจ†เจ‚ เจตเจฟเฉฑเจš, เจคเฉเจธเฉ€เจ‚ เจ‰เจธ เจธเจฎเฉ‡เจ‚ เจ‡เฉฑเจ• เจฐเฉ€เจฌเฉ‚เจŸ เจจเฉ‚เฉฐ เจคเจนเจฟ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจœเจฆเฉ‹เจ‚ เจฒเฉ‹เจก เจ˜เฉฑเจŸ เจนเฉ‹เจตเฉ‡เฅค เจœเฉ‡เจ•เจฐ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฒเจ—เจพเจคเจพเจฐ เจธเฉ‡เจตเจพ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ, เจคเจพเจ‚ เจคเฉเจธเฉ€เจ‚ เจฒเจพเจ—เฉ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ AWS ELB เจ•เฉเจจเฉˆเจ•เจธเจผเจจ เจกเจฐเฉ‡เจจเจฟเฉฐเจ—. เจ‰เจธเฉ‡ เจธเจฎเฉ‡เจ‚, เจœเจฆเฉ‹เจ‚ เจธเจพเจจเฉ‚เฉฐ เจธเจฟเจธเจŸเจฎ เจจเฉ‚เฉฐ เจฐเฉ€เจฌเฉ‚เจŸ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ, เจ…เจธเฉ€เจ‚ เจ‡เจธ เจธเจฟเจธเจŸเจฎ เจฆเฉ€ เจ‡เฉฑเจ• เจธเจฎเจพเจจเจพเจ‚เจคเจฐ เจ‰เจฆเจพเจนเจฐเจจ เจฒเจพเจ‚เจš เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚, เจฌเฉˆเจฒเฉ‡เจ‚เจธเจฐ เจจเฉ‚เฉฐ เจ‡เจธ เจตเจฟเฉฑเจš เจฌเจฆเจฒเจฆเฉ‡ เจนเจพเจ‚, เจ…เจคเฉ‡ เจชเฉเจฐเจพเจฃเฉ‡ เจ•เจจเฉˆเจ•เจธเจผเจจเจพเจ‚ เจฆเฉ‡ เจชเฉ‚เจฐเจพ เจนเฉ‹เจฃ เจฆเฉ€ เจ‰เจกเฉ€เจ• เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค เจธเจพเจฐเฉ‡ เจชเฉเจฐเจพเจฃเฉ‡ เจ•เจจเฉˆเจ•เจธเจผเจจ เจฌเฉฐเจฆ เจนเฉ‹เจฃ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจ…เจธเฉ€เจ‚ เจธเจฟเจธเจŸเจฎ เจฆเฉ€ เจชเฉเจฐเจพเจฃเฉ€ เจ‰เจฆเจพเจนเจฐเจฃ เจจเฉ‚เฉฐ เจฌเฉฐเจฆ เจ•เจฐ เจฆเจฟเฉฐเจฆเฉ‡ เจนเจพเจ‚เฅค

เจ†เจ“ เจนเฉเจฃ เจ†เจฐเจŸเฉ€เจซเฉˆเจ•เจŸ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจœเจพเจ‚ เจฌเจพเจนเจฐ เจธเฉฐเจฐเจšเจจเจพ เจจเฉ‚เฉฐ เจธเจŸเฉ‹เจฐ เจ•เจฐเจจ เจฆเฉ‡ เจฎเฉเฉฑเจฆเฉ‡ 'เจคเฉ‡ เจตเจฟเจšเจพเจฐ เจ•เจฐเฉ€เจเฅค เจœเฉ‡ เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจ†เจฐเจŸเฉ€เจซเฉˆเจ•เจŸ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจธเฉฐเจฐเจšเจจเจพ เจจเฉ‚เฉฐ เจธเจŸเฉ‹เจฐ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚, เจคเจพเจ‚ เจ˜เฉฑเจŸเฉ‹ เจ˜เฉฑเจŸ เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจ†เจฐเจŸเฉ€เจซเฉˆเจ•เจŸ เจฆเฉ€ เจ…เจธเฉˆเจ‚เจฌเจฒเฉ€ เจฆเฉ‡ เจฆเฉŒเจฐเจพเจจ เจธเฉฐเจฐเจšเจจเจพ เจฆเฉ€ เจธเจผเฉเฉฑเจงเจคเจพ เจฆเฉ€ เจชเฉเจธเจผเจŸเฉ€ เจ•เจฐเจจ เจฆเจพ เจฎเฉŒเจ•เจพ เจธเฉ€เฅค เจœเฉ‡เจ•เจฐ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐเฉ‡เจธเจผเจจ เจจเจฟเจฏเฉฐเจคเจฐเจฟเจค เจ†เจฐเจŸเฉ€เจซเฉˆเจ•เจŸ เจคเฉ‹เจ‚ เจฌเจพเจนเจฐ เจนเฉˆ, เจคเจพเจ‚ เจ‡เจน เจชเจคเจพ เจฒเจ—เจพเจ‰เจฃเจพ เจฎเฉเจธเจผเจ•เจฒ เจนเฉˆ เจ•เจฟ เจ‡เจธ เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจ•เจฟเจธเจจเฉ‡ เจ…เจคเฉ‡ เจ•เจฟเจ‰เจ‚ เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจ•เฉ€เจคเฉ€เจ†เจ‚ เจนเจจเฅค เจ‡เจน เจ•เจฟเฉฐเจจเจพ เจœเจผเจฐเฉ‚เจฐเฉ€ เจนเฉˆ? เจธเจพเจกเฉ€ เจฐเจพเจ เจตเจฟเฉฑเจš, เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจ‰เจคเจชเจพเจฆเจจ เจชเฉเจฐเจฃเจพเจฒเฉ€เจ†เจ‚ เจฒเจˆ เจ‡เฉฑเจ• เจธเจฅเจฟเจฐ เจ…เจคเฉ‡ เจ‰เฉฑเจš-เจ—เฉเจฃเจตเฉฑเจคเจพ เจธเฉฐเจฐเจšเจจเจพ เจนเฉ‹เจฃเจพ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจนเฉˆ.

เจ†เจฐเจŸเฉ€เจซเฉˆเจ•เจŸ เจฆเจพ เจธเฉฐเจธเจ•เจฐเจฃ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เจน เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ เจ•เจฟ เจ‡เจน เจ•เจฆเฉ‹เจ‚ เจฌเจฃเจพเจ‡เจ† เจ—เจฟเจ† เจธเฉ€, เจ‡เจธ เจตเจฟเฉฑเจš เจ•เจฟเจนเฉœเฉ‡ เจฎเฉเฉฑเจฒ เจธเจผเจพเจฎเจฒ เจนเจจ, เจ•เจฟเจนเฉœเฉ‡ เจซเฉฐเจ•เจธเจผเจจ เจธเจฎเจฐเฉฑเจฅ/เจ…เจฏเฉ‹เจ— เจนเจจ, เจ…เจคเฉ‡ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐเฉ‡เจธเจผเจจ เจตเจฟเฉฑเจš เจ•เจฟเจธเฉ‡ เจตเฉ€ เจคเจฌเจฆเฉ€เจฒเฉ€ เจฒเจˆ เจ•เฉŒเจฃ เจœเจผเจฟเฉฐเจฎเฉ‡เจตเจพเจฐ เจนเฉˆเฅค เจฌเฉ‡เจธเจผเฉฑเจ•, เจ‡เฉฑเจ• เจ†เจฐเจŸเฉ€เจซเฉˆเจ•เจŸ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจธเฉฐเจฐเจšเจจเจพ เจจเฉ‚เฉฐ เจธเจŸเฉ‹เจฐ เจ•เจฐเจจ เจฒเจˆ เจ•เฉเจ เจœเจคเจจเจพเจ‚ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ, เจ‡เจธ เจฒเจˆ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจธเฉ‚เจšเจฟเจค เจซเฉˆเจธเจฒเจพ เจฒเฉˆเจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค

เจฒเจพเจญ เจ…เจคเฉ‡ เจนเจพเจจเฉ€เจ†เจ‚

เจฎเฉˆเจ‚ เจชเฉเจฐเจธเจคเจพเจตเจฟเจค เจคเจ•เจจเจพเจฒเฉ‹เจœเฉ€ เจฆเฉ‡ เจšเฉฐเจ—เฉ‡ เจ…เจคเฉ‡ เจจเฉเจ•เจธเจพเจจเจพเจ‚ 'เจคเฉ‡ เจงเจฟเจ†เจจ เจฆเฉ‡เจฃเจพ เจšเจพเจนเจพเจ‚เจ—เจพเฅค

เจฒเจพเจญ

เจนเฉ‡เจ เจพเจ‚ เจ‡เฉฑเจ• เจ•เฉฐเจชเจพเจˆเจฒเจก เจกเจฟเจธเจŸเฉเจฐเฉ€เจฌเจฟเจŠเจŸเจฟเจก เจธเจฟเจธเจŸเจฎ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐเฉ‡เจธเจผเจจ เจฆเฉ€เจ†เจ‚ เจฎเฉเฉฑเจ– เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจฆเฉ€ เจ‡เฉฑเจ• เจธเฉ‚เจšเฉ€ เจนเฉˆ:

  1. เจธเจฅเจฟเจฐ เจธเฉฐเจฐเจšเจจเจพ เจœเจพเจ‚เจšเฅค เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เจน เจฏเจ•เฉ€เจจเฉ€ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจธเจนเจพเจ‡เจ• เจนเฉˆ
    เจธเฉฐเจฐเจšเจจเจพ เจธเจนเฉ€ เจนเฉˆเฅค
  2. เจ…เจฎเฉ€เจฐ เจธเฉฐเจฐเจšเจจเจพ เจญเจพเจธเจผเจพ. เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡, เจนเฉ‹เจฐ เจธเฉฐเจฐเจšเจจเจพ เจตเจฟเจงเฉ€เจ†เจ‚ เจตเฉฑเจง เจคเฉ‹เจ‚ เจตเฉฑเจง เจธเจŸเฉเจฐเจฟเฉฐเจ— เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจฌเจฆเจฒ เจคเฉฑเจ• เจธเฉ€เจฎเจฟเจค เจนเฉเฉฐเจฆเฉ€เจ†เจ‚ เจนเจจเฅค Scala เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจธเจฎเฉ‡เจ‚, เจคเฉเจนเจพเจกเฉ€ เจธเฉฐเจฐเจšเจจเจพ เจจเฉ‚เฉฐ เจฌเจฟเจนเจคเจฐ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจญเจพเจธเจผเจพ เจฆเฉ€เจ†เจ‚ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจฆเฉ€ เจ‡เฉฑเจ• เจตเจฟเจธเจผเจพเจฒ เจธเจผเฉเจฐเฉ‡เจฃเฉ€ เจ‰เจชเจฒเจฌเจง เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค เจ‰เจฆเจพเจนเจฐเจฃ เจตเจœเฉ‹เจ‚ เจ…เจธเฉ€เจ‚ เจตเจฐเจค เจธเจ•เจฆเฉ‡ เจนเจพเจ‚
    เจกเจฟเจซเจพเจฒเจŸ เจฎเฉเฉฑเจฒเจพเจ‚ เจฒเจˆ เจ—เฉเจฃ, เจธเจฎเฉ‚เจน เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐเจพเจ‚ เจฒเจˆ เจ†เจฌเจœเฉˆเจ•เจŸ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ, เจ…เจธเฉ€เจ‚ เจเจจเจ•เจฒเฉ‹เจœเจผเจฟเฉฐเจ— เจธเจ•เฉ‹เจช เจตเจฟเฉฑเจš เจธเจฟเจฐเจซ เจ‡เฉฑเจ• เจตเจพเจฐ เจ˜เฉ‹เจธเจผเจฟเจค เจ•เฉ€เจคเฉ‡ เจตเจพเจฒเจพเจ‚ (DRY) เจฆเจพ เจนเจตเจพเจฒเจพ เจฆเฉ‡ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚เฅค เจคเฉเจธเฉ€เจ‚ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจ•เจฒเจพเจธ เจจเฉ‚เฉฐ เจธเจฟเฉฑเจงเฉ‡ เจธเฉฐเจฐเจšเจจเจพ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจธเจผเฉเจฐเฉ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ (Seq, Map, เจ•เจธเจŸเจฎ เจ•เจฒเจพเจธเจพเจ‚)เฅค
  3. DSL. Scala เจตเจฟเฉฑเจš เจฌเจนเฉเจค เจธเจพเจฐเฉ€เจ†เจ‚ เจญเจพเจธเจผเจพ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจนเจจ เจœเฉ‹ เจ‡เฉฑเจ• DSL เจฌเจฃเจพเจ‰เจฃเจพ เจ†เจธเจพเจจ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ€เจ†เจ‚ เจนเจจเฅค เจ‡เจนเจจเจพเจ‚ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจฆเจพ เจซเจพเจ‡เจฆเจพ เจ‰เจ เจพเจ‰เจฃเจพ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจธเฉฐเจฐเจšเจจเจพ เจญเจพเจธเจผเจพ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจเจพ เจธเฉฐเจญเจต เจนเฉˆ เจœเฉ‹ เจ‰เจชเจญเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจฆเฉ‡ เจŸเฉ€เจšเฉ‡ เจธเจฎเฉ‚เจน เจฒเจˆ เจตเจงเฉ‡เจฐเฉ‡ เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจนเฉˆ, เจคเจพเจ‚ เจœเฉ‹ เจธเฉฐเจฐเจšเจจเจพ เจ˜เฉฑเจŸเฉ‹ เจ˜เฉฑเจŸ เจกเฉ‹เจฎเฉ‡เจจ เจฎเจพเจนเจฐเจพเจ‚ เจฆเฉเจ†เจฐเจพ เจชเฉœเฉเจนเจจเจฏเฉ‹เจ— เจนเฉ‹เจตเฉ‡เฅค เจฎเจพเจนเจฐ, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจธเฉฐเจฐเจšเจจเจพ เจธเจฎเฉ€เจ–เจฟเจ† เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจตเจฟเฉฑเจš เจนเจฟเฉฑเจธเจพ เจฒเฉˆ เจธเจ•เจฆเฉ‡ เจนเจจเฅค
  4. เจจเฉ‹เจกเจพเจ‚ เจตเจฟเจšเจ•เจพเจฐ เจ‡เจ•เจธเจพเจฐเจคเจพ เจ…เจคเฉ‡ เจธเจฎเจ•เจพเจฒเฉ€เฅค เจ‡เฉฑเจ• เจธเจฟเฉฐเจ—เจฒ เจฌเจฟเฉฐเจฆเฉ‚ 'เจคเฉ‡ เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเฉ‡ เจ‡เฉฑเจ• เจชเฉ‚เจฐเฉ‡ เจกเจฟเจธเจŸเจฐเฉ€เจฌเจฟเจŠเจŸเจก เจธเจฟเจธเจŸเจฎ เจฆเฉ€ เจธเฉฐเจฐเจšเจจเจพ เจนเฉ‹เจฃ เจฆเจพ เจ‡เฉฑเจ• เจซเจพเจ‡เจฆเจพ เจ‡เจน เจนเฉˆ เจ•เจฟ เจธเจพเจฐเฉ‡ เจฎเฉเฉฑเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจตเจพเจฐ เจ˜เฉ‹เจธเจผเจฟเจค เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจซเจฟเจฐ เจœเจฟเฉฑเจฅเฉ‡ เจตเฉ€ เจ‰เจนเจจเจพเจ‚ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ, เจฆเฉเจฌเจพเจฐเจพ เจตเจฐเจคเฉ‹เจ‚ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆเฅค เจชเฉ‹เจฐเจŸเจพเจ‚ เจจเฉ‚เฉฐ เจ˜เฉ‹เจธเจผเจฟเจค เจ•เจฐเจจ เจฒเจˆ เจซเฉˆเจ‚เจŸเจฎ เจ•เจฟเจธเจฎเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ เจฏเจ•เฉ€เจจเฉ€ เจฌเจฃเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ เจ•เจฟ เจจเฉ‹เจก เจธเจพเจฐเฉ€เจ†เจ‚ เจธเจนเฉ€ เจธเจฟเจธเจŸเจฎ เจธเฉฐเจฐเจšเจจเจพเจตเจพเจ‚ เจตเจฟเฉฑเจš เจ…เจจเฉเจ•เฉ‚เจฒ เจชเฉเจฐเฉ‹เจŸเฉ‹เจ•เฉ‹เจฒ เจตเจฐเจค เจฐเจนเฉ‡ เจนเจจเฅค เจจเฉ‹เจกเจพเจ‚ เจตเจฟเจšเจ•เจพเจฐ เจธเจชเฉฑเจธเจผเจŸ เจฒเจพเจœเจผเจฎเฉ€ เจจเจฟเจฐเจญเจฐเจคเจพ เจนเฉ‹เจฃ เจจเจพเจฒ เจ‡เจน เจฏเจ•เฉ€เจจเฉ€ เจนเฉเฉฐเจฆเจพ เจนเฉˆ เจ•เจฟ เจธเจพเจฐเฉ€เจ†เจ‚ เจธเฉ‡เจตเจพเจตเจพเจ‚ เจœเฉเฉœเฉ€เจ†เจ‚ เจนเฉ‹เจˆเจ†เจ‚ เจนเจจเฅค
  5. เจ‰เฉฑเจš เจ—เฉเจฃเจตเฉฑเจคเจพ เจตเจฟเฉฑเจš เจฌเจฆเจฒเจพเจ…. เจ‡เฉฑเจ• เจธเจพเจ‚เจเฉ€ เจตเจฟเจ•เจพเจธ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจธเฉฐเจฐเจšเจจเจพ เจตเจฟเฉฑเจš เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจ•เจฐเจจ เจจเจพเจฒ เจธเฉฐเจฐเจšเจจเจพ เจฒเจˆ เจ‰เฉฑเจš เจ—เฉเจฃเจตเฉฑเจคเจพ เจตเจพเจฒเฉ‡ เจฎเจฟเจ†เจฐเจพเจ‚ เจจเฉ‚เฉฐ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจเจพ เจตเฉ€ เจธเฉฐเจญเจต เจนเฉ‹ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค
  6. เจธเจฎเจ•เจพเจฒเฉ€ เจธเฉฐเจฐเจšเจจเจพ เจ…เฉฑเจชเจกเฉ‡เจŸ. เจธเฉฐเจฐเจšเจจเจพ เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจ†เจŸเฉ‹เจฎเฉˆเจŸเจฟเจ• เจธเจฟเจธเจŸเจฎ เจคเฉˆเจจเจพเจคเฉ€ เจฏเจ•เฉ€เจจเฉ€ เจฌเจฃเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ เจ•เจฟ เจธเจพเจฐเฉ‡ เจจเฉ‹เจก เจ…เฉฑเจชเจกเฉ‡เจŸ เจ•เฉ€เจคเฉ‡ เจ—เจ เจนเจจเฅค
  7. เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจธเจฐเจฒ เจฌเจฃเจพเจ‰เจฃเจพ. เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจชเจพเจฐเจธเจฟเฉฐเจ—, เจธเฉฐเจฐเจšเจจเจพ เจœเจพเจ‚เจš, เจœเจพเจ‚ เจ—เจฒเจค เจฎเฉเฉฑเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจธเฉฐเจญเจพเจฒเจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค เจ‡เจน เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเฉ€ เจ—เฉเฉฐเจเจฒเจคเจพ เจจเฉ‚เฉฐ เจ˜เจŸเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ. (เจธเจพเจกเฉ€ เจ‰เจฆเจพเจนเจฐเจจ เจตเจฟเฉฑเจš เจฆเฉ‡เจ–เฉ€ เจ—เจˆ เจ•เฉเจ เจธเฉฐเจฐเจšเจจเจพ เจœเจŸเจฟเจฒเจคเจพ เจ•เฉฐเจชเจพเจ‡เจฒ เจ•เฉ€เจคเฉ€ เจธเฉฐเจฐเจšเจจเจพ เจฆเฉ€ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจชเจฐ เจธเจฟเจฐเจซ เจ‡เฉฑเจ• เจธเฉเจšเฉ‡เจค เจซเฉˆเจธเจฒเจพ เจนเฉˆ เจœเฉ‹ เจ•เจฟ เจตเจงเฉ‡เจฐเฉ‡ เจ•เจฟเจธเจฎ เจฆเฉ€ เจธเฉเจฐเฉฑเจ–เจฟเจ† เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจจ เจฆเฉ€ เจ‡เฉฑเจ›เจพ เจฆเฉเจ†เจฐเจพ เจธเฉฐเจšเจพเจฒเจฟเจค เจนเฉˆเฅค) เจ†เจฎ เจธเฉฐเจฐเจšเจจเจพ เจคเฉ‡ เจตเจพเจชเจธ เจœเจพเจฃเจพ เจ•เจพเจซเจผเฉ€ เจ†เจธเจพเจจ เจนเฉˆ - เจฌเจธ เจ—เฉเฉฐเจฎ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเฉ‹ เจนเจฟเฉฑเจธเฉ‡. เจ‡เจธ เจฒเจˆ, เจคเฉเจธเฉ€เจ‚, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจ‡เฉฑเจ• เจ•เฉฐเจชเจพเจ‡เจฒ เจ•เฉ€เจคเฉ€ เจธเฉฐเจฐเจšเจจเจพ เจจเจพเจฒ เจธเจผเฉเจฐเฉ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจฌเฉ‡เจฒเฉ‹เฉœเฉ‡ เจนเจฟเฉฑเจธเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจจเฉ‚เฉฐ เจ‰เจฆเฉ‹เจ‚ เจคเฉฑเจ• เจฎเฉเจฒเจคเจตเฉ€ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจœเจฆเฉ‹เจ‚ เจคเฉฑเจ• เจ‡เจน เจ…เจธเจฒ เจตเจฟเฉฑเจš เจฒเฉ‹เฉœเฉ€เจ‚เจฆเจพ เจนเฉˆ.
  8. เจชเฉเจฐเจฎเจพเจฃเจฟเจค เจธเฉฐเจฐเจšเจจเจพเฅค เจ•เจฟเจ‰เจ‚เจ•เจฟ เจธเฉฐเจฐเจšเจจเจพ เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจ•เจฟเจธเฉ‡ เจนเฉ‹เจฐ เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจฆเฉ€ เจ†เจฎ เจ•เจฟเจธเจฎเจค เจฆเฉ€ เจชเจพเจฒเจฃเจพ เจ•เจฐเจฆเฉ€เจ†เจ‚ เจนเจจ, เจ‡เจธ เจฒเจˆ เจธเจพเจจเฉ‚เฉฐ เจœเฉ‹ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจฎเจฟเจฒเจฆเจพ เจนเฉˆ เจ‰เจน เจ‡เฉฑเจ• เจตเจฟเจฒเฉฑเจ–เจฃ เจธเฉฐเจธเจ•เจฐเจฃ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจ•เจฒเจพเจคเจฎเจ• เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค เจ‡เจน เจธเจพเจจเฉ‚เฉฐ, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจœเฉ‡เจ•เจฐ เจฒเฉ‹เฉœ เจนเฉ‹เจตเฉ‡ เจคเจพเจ‚ เจธเฉฐเจฐเจšเจจเจพ เจฆเฉ‡ เจชเจฟเจ›เจฒเฉ‡ เจธเฉฐเจธเจ•เจฐเจฃ 'เจคเฉ‡ เจตเจพเจชเจธ เจœเจพเจฃ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจธเจพเจฒ เจชเจนเจฟเจฒเจพเจ‚ เจฆเฉ€ เจธเฉฐเจฐเจšเจจเจพ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจตเฉ€ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจธเจฟเจธเจŸเจฎ เจฌเจฟเจฒเจ•เฉเจฒ เจ‰เจธเฉ‡ เจคเจฐเฉเจนเจพเจ‚ เจ•เฉฐเจฎ เจ•เจฐเฉ‡เจ—เจพเฅค เจ‡เฉฑเจ• เจธเจฅเจฟเจฐ เจธเฉฐเจฐเจšเจจเจพ เจ‡เฉฑเจ• เจตเฉฐเจกเฉ‡ เจธเจฟเจธเจŸเจฎ เจฆเฉ€ เจญเจตเจฟเฉฑเจ–เจฌเจพเจฃเฉ€ เจ…เจคเฉ‡ เจญเจฐเฉ‹เจธเฉ‡เจฏเฉ‹เจ—เจคเจพ เจตเจฟเฉฑเจš เจธเฉเจงเจพเจฐ เจ•เจฐเจฆเฉ€ เจนเฉˆเฅค เจ•เจฟเจ‰เจ‚เจ•เจฟ เจธเฉฐเจฐเจšเจจเจพ เจจเฉ‚เฉฐ เจธเฉฐเจ•เจฒเจจ เจฆเฉ‡ เจชเฉœเจพเจ… 'เจคเฉ‡ เจจเจฟเจธเจผเจšเจฟเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจ‡เจธ เจฒเจˆ เจ‡เจธเจจเฉ‚เฉฐ เจ‰เจคเจชเจพเจฆเจจ เจตเจฟเฉฑเจš เจœเจพเจ…เจฒเฉ€ เจฌเจฃเจพเจ‰เจฃเจพ เจ•เจพเจซเจผเฉ€ เจฎเฉเจธเจผเจ•เจฒ เจนเฉˆเฅค
  9. เจฎเจพเจกเจฟเจŠเจฒเจฐเจฟเจŸเฉ€เฅค เจชเฉเจฐเจธเจคเจพเจตเจฟเจค เจซเจฐเฉ‡เจฎเจตเจฐเจ• เจฎเจพเจกเจฟเจŠเจฒเจฐ เจนเฉˆ เจ…เจคเฉ‡ เจตเฉฑเจ–-เจตเฉฑเจ– เจชเฉเจฐเจฃเจพเจฒเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจฎเฉ‹เจกเจฟเจŠเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจตเฉฑเจ–-เจตเฉฑเจ– เจคเจฐเฉ€เจ•เจฟเจ†เจ‚ เจจเจพเจฒ เจœเฉ‹เฉœเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจ–เจพเจธ เจคเฉŒเจฐ 'เจคเฉ‡, เจคเฉเจธเฉ€เจ‚ เจธเจฟเจธเจŸเจฎ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจธเจฟเฉฐเจ—เจฒ เจจเฉ‹เจก 'เจคเฉ‡ เจšเจฒเจพเจ‰เจฃ เจฒเจˆ, เจ…เจคเฉ‡ เจฆเฉ‚เจœเฉ‡ เจตเจฟเฉฑเจš เจ•เจˆ เจจเฉ‹เจกเจพเจ‚ 'เจคเฉ‡ เจšเจฒเจพเจ‰เจฃ เจฒเจˆ เจธเฉฐเจฐเจšเจฟเจค เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค เจคเฉเจธเฉ€เจ‚ เจธเจฟเจธเจŸเจฎ เจฆเฉ‡ เจ‰เจคเจชเจพเจฆเจจ เจ‰เจฆเจพเจนเจฐเจจเจพเจ‚ เจฒเจˆ เจ•เจˆ เจธเฉฐเจฐเจšเจจเจพเจตเจพเจ‚ เจฌเจฃเจพ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค
  10. เจŸเฉˆเจธเจŸเจฟเฉฐเจ—. เจตเจฟเจ…เจ•เจคเฉ€เจ—เจค เจธเฉ‡เจตเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจจเจ•เจฒเฉ€ เจตเจธเจคเฉ‚เจ†เจ‚ เจจเจพเจฒ เจฌเจฆเจฒ เจ•เฉ‡, เจคเฉเจธเฉ€เจ‚ เจธเจฟเจธเจŸเจฎ เจฆเฉ‡ เจ•เจˆ เจธเฉฐเจธเจ•เจฐเจฃ เจชเฉเจฐเจพเจชเจค เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจœเฉ‹ เจœเจพเจ‚เจš เจฒเจˆ เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจนเจจเฅค
  11. เจเจ•เฉ€เจ•เจฐเจฃ เจŸเฉˆเจธเจŸเจฟเฉฐเจ—. เจชเฉ‚เจฐเฉ‡ เจตเจฟเจคเจฐเจฟเจค เจธเจฟเจธเจŸเจฎ เจฒเจˆ เจ‡เฉฑเจ• เจธเจฟเฉฐเจ—เจฒ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐเฉ‡เจธเจผเจจ เจนเฉ‹เจฃ เจจเจพเจฒ เจเจ•เฉ€เจ•เจฐเจฃ เจŸเฉˆเจธเจŸเจฟเฉฐเจ— เจฆเฉ‡ เจนเจฟเฉฑเจธเฉ‡ เจตเจœเฉ‹เจ‚ เจ‡เฉฑเจ• เจจเจฟเจฏเฉฐเจคเจฐเจฟเจค เจตเจพเจคเจพเจตเจฐเจฃ เจตเจฟเฉฑเจš เจธเจพเจฐเฉ‡ เจญเจพเจ—เจพเจ‚ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃเจพ เจธเฉฐเจญเจต เจนเฉ‹ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจ‡เจน เจจเจ•เจฒ เจ•เจฐเจจเจพ เจ†เจธเจพเจจ เจนเฉˆ, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจ…เจœเจฟเจนเฉ€ เจธเจฅเจฟเจคเฉ€ เจœเจฟเฉฑเจฅเฉ‡ เจ•เฉเจ เจจเฉ‹เจก เจชเจนเฉเฉฐเจšเจฏเฉ‹เจ— เจนเฉ‹ เจœเจพเจ‚เจฆเฉ‡ เจนเจจเฅค

เจจเฉเจ•เจธเจพเจจ เจ…เจคเฉ‡ เจธเฉ€เจฎเจพเจตเจพเจ‚

เจ•เฉฐเจชเจพเจ‡เจฒ เจ•เฉ€เจคเฉ€ เจธเฉฐเจฐเจšเจจเจพ เจนเฉ‹เจฐ เจธเฉฐเจฐเจšเจจเจพ เจชเจนเฉเฉฐเจšเจพเจ‚ เจคเฉ‹เจ‚ เจตเฉฑเจ–เจฐเฉ€ เจนเฉˆ เจ…เจคเฉ‡ เจ•เฉเจ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจฒเจˆ เจขเฉเจ•เจตเฉ€เจ‚ เจจเจนเฉ€เจ‚ เจนเฉ‹ เจธเจ•เจฆเฉ€เฅค เจนเฉ‡เจ เจพเจ‚ เจ•เฉเจ เจจเฉเจ•เจธเจพเจจ เจนเจจ:

  1. เจธเจฅเจฟเจฐ เจธเฉฐเจฐเจšเจจเจพเฅค เจ•เจˆ เจตเจพเจฐ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‰เจคเจชเจพเจฆเจจ เจตเจฟเฉฑเจš เจธเฉฐเจฐเจšเจจเจพ เจจเฉ‚เฉฐ เจคเฉ‡เจœเจผเฉ€ เจจเจพเจฒ เจ เฉ€เจ• เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ, เจธเจพเจฐเฉ‡ เจธเฉเจฐเฉฑเจ–เจฟเจ† เจชเฉเจฐเจฃเจพเจฒเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจ›เฉฑเจก เจ•เฉ‡. เจ‡เจธ เจชเจนเฉเฉฐเจš เจจเจพเจฒ เจ‡เจน เจนเฉ‹เจฐ เจฎเฉเจธเจผเจ•เจฒ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ. เจฌเจนเฉเจค เจ˜เฉฑเจŸ เจคเฉ‹เจ‚ เจ˜เฉฑเจŸ, เจธเฉฐเจ•เจฒเจจ เจ…เจคเฉ‡ เจ†เจŸเฉ‹เจฎเฉˆเจŸเจฟเจ• เจคเฉˆเจจเจพเจคเฉ€ เจฆเฉ€ เจ…เจœเฉ‡ เจตเฉ€ เจฒเฉ‹เฉœ เจนเฉ‹เจตเฉ‡เจ—เฉ€เฅค เจ‡เจน เจชเจนเฉเฉฐเจš เจฆเฉ€ เจ‡เฉฑเจ• เจฒเจพเจญเจฆเจพเจ‡เจ• เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ•เฉเจ เจฎเจพเจฎเจฒเจฟเจ†เจ‚ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจจเฉเจ•เจธเจพเจจ เจนเฉˆเฅค
  2. เจธเฉฐเจฐเจšเจจเจพ เจชเฉ€เฉœเฉเจนเฉ€. เจœเฉ‡เจ•เจฐ เจธเฉฐเจฐเจšเจจเจพ เจซเจพเจ‡เจฒ เจ‡เฉฑเจ• เจ†เจŸเฉ‹เจฎเฉˆเจŸเจฟเจ• เจŸเฉ‚เจฒ เจฆเฉเจ†เจฐเจพ เจคเจฟเจ†เจฐ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ, เจคเจพเจ‚ เจฌเจฟเจฒเจก เจธเจ•เฉเจฐเจฟเจชเจŸ เจจเฉ‚เฉฐ เจเจ•เฉ€เจ•เฉเจฐเจฟเจค เจ•เจฐเจจ เจฒเจˆ เจตเจพเจงเฉ‚ เจ•เฉ‹เจธเจผเจฟเจธเจผเจพเจ‚ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉ‹ เจธเจ•เจฆเฉ€ เจนเฉˆเฅค
  3. เจธเฉฐเจฆเฅค เจตเจฐเจคเจฎเจพเจจ เจตเจฟเฉฑเจš, เจธเฉฐเจฐเจšเจจเจพ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ เจคเจฟเจ†เจฐ เจ•เฉ€เจคเฉ€เจ†เจ‚ เจธเจนเฉ‚เจฒเจคเจพเจ‚ เจ…เจคเฉ‡ เจคเจ•เจจเฉ€เจ•เจพเจ‚ เจŸเฉˆเจ•เจธเจŸ เจซเจพเจˆเจฒเจพเจ‚ 'เจคเฉ‡ เจ…เจงเจพเจฐเจค เจนเจจเฅค เจ…เจœเจฟเจนเฉ€เจ†เจ‚ เจธเจพเจฐเฉ€เจ†เจ‚ เจ‰เจชเจฏเฉ‹เจ—เจคเจพเจตเจพเจ‚/เจคเจ•เจจเฉ€เจ•เจพเจ‚ เจ‡เฉฑเจ• เจธเฉฐเจ•เจฒเจฟเจค เจธเฉฐเจฐเจšเจจเจพ เจตเจฟเฉฑเจš เจ‰เจชเจฒเจฌเจง เจจเจนเฉ€เจ‚ เจนเฉ‹เจฃเจ—เฉ€เจ†เจ‚เฅค
  4. เจฐเจตเฉฑเจˆเจ เจตเจฟเฉฑเจš เจคเจฌเจฆเฉ€เจฒเฉ€ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค เจกเจฟเจตเฉˆเจฒเจชเจฐ เจ…เจคเฉ‡ DevOps เจŸเฉˆเจ•เจธเจŸ เจซเจพเจˆเจฒเจพเจ‚ เจฆเฉ‡ เจ†เจฆเฉ€ เจนเจจเฅค เจ‡เฉฑเจ• เจธเฉฐเจฐเจšเจจเจพ เจ•เฉฐเจชเจพเจ‡เจฒ เจ•เจฐเจจ เจฆเจพ เจฌเจนเฉเจค เจนเฉ€ เจตเจฟเจšเจพเจฐ เจฅเฉ‹เฉœเจพ เจ…เจšเจพเจจเจ• เจ…เจคเฉ‡ เจ…เจธเจพเจงเจพเจฐเจจ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ…เจธเจตเฉ€เจ•เจพเจฐ เจฆเจพ เจ•เจพเจฐเจจ เจฌเจฃ เจธเจ•เจฆเจพ เจนเฉˆเฅค
  5. เจ‡เฉฑเจ• เจ‰เฉฑเจš เจ—เฉเจฃเจตเฉฑเจคเจพ เจตเจฟเจ•เจพเจธ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ. เจ•เฉฐเจชเจพเจ‡เจฒ เจ•เฉ€เจคเฉ€ เจธเฉฐเจฐเจšเจจเจพ เจจเฉ‚เฉฐ เจ†เจฐเจพเจฎ เจจเจพเจฒ เจตเจฐเจคเจฃ เจฒเจˆ, เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ (CI/CD) เจจเฉ‚เฉฐ เจฌเจฃเจพเจ‰เจฃ เจ…เจคเฉ‡ เจคเฉˆเจจเจพเจค เจ•เจฐเจจ เจฆเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจฆเจพ เจชเฉ‚เจฐเจพ เจ†เจŸเฉ‹เจฎเฉ‡เจธเจผเจจ เจœเจผเจฐเฉ‚เจฐเฉ€ เจนเฉˆเฅค เจจเจนเฉ€เจ‚ เจคเจพเจ‚ เจ‡เจน เจ•เจพเจซเจผเฉ€ เจ…เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจนเฉ‹เจตเฉ‡เจ—เจพ.

เจ†เจ‰ เจ…เจธเฉ€เจ‚ เจตเจฟเจšเจพเจฐเฉ€ เจ—เจˆ เจ‰เจฆเจพเจนเจฐเจฃ เจฆเฉ€เจ†เจ‚ เจ•เจˆ เจธเฉ€เจฎเจพเจตเจพเจ‚ 'เจคเฉ‡ เจตเฉ€ เจงเจฟเจ†เจจ เจฆเฉ‡เจˆเจ เจœเฉ‹ เจ‡เฉฑเจ• เจธเฉฐเจ•เจฒเจฟเจค เจธเฉฐเจฐเจšเจจเจพ เจฆเฉ‡ เจตเจฟเจšเจพเจฐ เจจเจพเจฒ เจธเจฌเฉฐเจงเจค เจจเจนเฉ€เจ‚ เจนเจจ:

  1. เจœเฉ‡เจ•เจฐ เจ…เจธเฉ€เจ‚ เจฌเฉ‡เจฒเฉ‹เฉœเฉ€ เจธเฉฐเจฐเจšเจจเจพ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ เจœเฉ‹ เจจเฉ‹เจก เจฆเฉเจ†เจฐเจพ เจจเจนเฉ€เจ‚ เจตเจฐเจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ, เจคเจพเจ‚ เจ•เฉฐเจชเจพเจˆเจฒเจฐ เจ—เฉเฉฐเจฎ เจฒเจพเจ—เฉ‚เจ•เจฐเจจ เจฆเจพ เจชเจคเจพ เจฒเจ—เจพเจ‰เจฃ เจตเจฟเฉฑเจš เจธเจพเจกเฉ€ เจฎเจฆเจฆ เจจเจนเฉ€เจ‚ เจ•เจฐเฉ‡เจ—เจพเฅค เจ‡เจธ เจธเจฎเฉฑเจธเจฟเจ† เจจเฉ‚เฉฐ เจ•เฉ‡เจ• เจชเฉˆเจŸเจฐเจจ เจจเฉ‚เฉฐ เจ›เฉฑเจก เจ•เฉ‡ เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจธเจ–เจผเจค เจ•เจฟเจธเจฎเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจนเฉฑเจฒ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, HList เจœเจพเจ‚ เจธเฉฐเจฐเจšเจจเจพ เจจเฉ‚เฉฐ เจฆเจฐเจธเจพเจ‰เจฃ เจฒเจˆ เจฌเฉ€เจœเจ—เจฃเจฟเจคเจฟเจ• เจกเฉ‡เจŸเจพ เจ•เจฟเจธเจฎเจพเจ‚ (เจ•เฉ‡เจธ เจ•เจฒเจพเจธเจพเจ‚)เฅค
  2. เจธเฉฐเจฐเจšเจจเจพ เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจ…เจœเจฟเจนเฉ€เจ†เจ‚ เจฒเจพเจˆเจจเจพเจ‚ เจนเจจ เจœเฉ‹ เจธเฉฐเจฐเจšเจจเจพ เจจเจพเจฒ เจธเฉฐเจฌเฉฐเจงเจฟเจค เจจเจนเฉ€เจ‚ เจนเจจ: (package, import,เจ†เจฌเจœเฉˆเจ•เจŸ เจ˜เฉ‹เจธเจผเจฃเจพเจตเจพเจ‚; override defเจฆเฉ‡ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐเจพเจ‚ เจฒเจˆ เจœเจฟเจจเฉเจนเจพเจ‚ เจฆเฉ‡ เจกเจฟเจซเฉŒเจฒเจŸ เจฎเฉเฉฑเจฒ เจนเจจ)เฅค เจ‡เจธ เจคเฉ‹เจ‚ เจ…เฉฐเจธเจผเจ• เจคเฉŒเจฐ 'เจคเฉ‡ เจฌเจšเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจ†เจชเจฃเฉ‡ เจ–เฉเจฆ เจฆเฉ‡ DSL เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹. เจ‡เจธ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจนเฉ‹เจฐ เจ•เจฟเจธเจฎเจพเจ‚ เจฆเฉ€เจ†เจ‚ เจธเฉฐเจฐเจšเจจเจพเจตเจพเจ‚ (เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, XML) เจซเจพเจˆเจฒ เจขเจพเจ‚เจšเฉ‡ 'เจคเฉ‡ เจ•เฉเจ เจชเจพเจฌเฉฐเจฆเฉ€เจ†เจ‚ เจตเฉ€ เจฒเจพเจ‰เจ‚เจฆเฉ€เจ†เจ‚ เจนเจจเฅค
  3. เจ‡เจธ เจชเฉ‹เจธเจŸ เจฆเฉ‡ เจ‰เจฆเฉ‡เจธเจผเจพเจ‚ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจธเจฎเจพเจจ เจจเฉ‹เจกเจพเจ‚ เจฆเฉ‡ เจ•เจฒเฉฑเจธเจŸเจฐ เจฆเฉ€ เจ—เจคเฉ€เจธเจผเฉ€เจฒ เจชเฉเจจเจฐ-เจธเฉฐเจฐเจšเจจเจพ 'เจคเฉ‡ เจตเจฟเจšเจพเจฐ เจจเจนเฉ€เจ‚ เจ•เจฐ เจฐเจนเฉ‡ เจนเจพเจ‚เฅค

เจธเจฟเฉฑเจŸเจพ

เจ‡เจธ เจชเฉ‹เจธเจŸ เจตเจฟเฉฑเจš, เจ…เจธเฉ€เจ‚ เจธเจ•เฉ‡เจฒเจพ เจŸเจพเจˆเจช เจธเจฟเจธเจŸเจฎ เจฆเฉ€เจ†เจ‚ เจ‰เฉฑเจจเจค เจธเจฎเจฐเฉฑเจฅเจพเจตเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจธเจฐเฉ‹เจค เจ•เฉ‹เจก เจตเจฟเฉฑเจš เจธเฉฐเจฐเจšเจจเจพ เจจเฉ‚เฉฐ เจฆเจฐเจธเจพเจ‰เจฃ เจฆเฉ‡ เจตเจฟเจšเจพเจฐ เจฆเฉ€ เจชเฉœเจšเฉ‹เจฒ เจ•เฉ€เจคเฉ€ เจนเฉˆเฅค เจ‡เจน เจชเจนเฉเฉฐเจš xml เจœเจพเจ‚ เจŸเฉˆเจ•เจธเจŸ เจซเจพเจˆเจฒเจพเจ‚ เจฆเฉ‡ เจ…เจงเจพเจฐ เจคเฉ‡ เจฐเจตเจพเจ‡เจคเฉ€ เจธเฉฐเจฐเจšเจจเจพ เจตเจฟเจงเฉ€เจ†เจ‚ เจฆเฉ‡ เจฌเจฆเจฒ เจตเจœเฉ‹เจ‚ เจตเฉฑเจ–-เจตเฉฑเจ– เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš เจตเจฐเจคเฉ€ เจœเจพ เจธเจ•เจฆเฉ€ เจนเฉˆเฅค เจญเจพเจตเฉ‡เจ‚ เจธเจพเจกเฉ€ เจ‰เจฆเจพเจนเจฐเจจ เจธเจ•เฉ‡เจฒเจพ เจตเจฟเฉฑเจš เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเฉ€ เจ—เจˆ เจนเฉˆ, เจ‰เจนเฉ€ เจตเจฟเจšเจพเจฐ เจฆเฉ‚เจœเฉ€เจ†เจ‚ เจ•เฉฐเจชเจพเจ‡เจฒ เจ•เฉ€เจคเฉ€เจ†เจ‚ เจญเจพเจธเจผเจพเจตเจพเจ‚ (เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจ•เฉ‹เจŸเจฒเจฟเจจ, เจธเฉ€#, เจธเจตเจฟเจซเจŸ, ...) เจตเจฟเฉฑเจš เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจ•เฉ€เจคเฉ‡ เจœเจพ เจธเจ•เจฆเฉ‡ เจนเจจเฅค เจคเฉเจธเฉ€เจ‚ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ‡ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจตเจฟเฉฑเจš เจ‡เจธ เจชเจนเฉเฉฐเจš เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจ…เจคเฉ‡, เจœเฉ‡เจ•เจฐ เจ‡เจน เจ•เฉฐเจฎ เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆ, เจคเจพเจ‚ เจ—เฉเฉฐเจฎ เจนเฉ‹เจ เจญเจพเจ—เจพเจ‚ เจจเฉ‚เฉฐ เจœเฉ‹เฉœเจฆเฉ‡ เจนเฉ‹เจ, เจŸเฉˆเจ•เจธเจŸ เจซเจพเจˆเจฒ 'เจคเฉ‡ เจœเจพเจ“เฅค

เจ•เฉเจฆเจฐเจคเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡, เจ‡เฉฑเจ• เจธเฉฐเจ•เจฒเจฟเจค เจธเฉฐเจฐเจšเจจเจพ เจฒเจˆ เจ‡เฉฑเจ• เจ‰เฉฑเจš เจ—เฉเจฃเจตเฉฑเจคเจพ เจตเจฟเจ•เจพเจธ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ. เจฌเจฆเจฒเฉ‡ เจตเจฟเฉฑเจš, เจธเฉฐเจฐเจšเจจเจพ เจฆเฉ€ เจ‰เฉฑเจš เจ—เฉเจฃเจตเฉฑเจคเจพ เจ…เจคเฉ‡ เจญเจฐเฉ‹เจธเฉ‡เจฏเฉ‹เจ—เจคเจพ เจจเฉ‚เฉฐ เจฏเจ•เฉ€เจจเฉ€ เจฌเจฃเจพเจ‡เจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ.

เจตเจฟเจšเจพเจฐเฉ€ เจชเจนเฉเฉฐเจš เจฆเจพ เจตเจฟเจธเจคเจพเจฐ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ:

  1. เจคเฉเจธเฉ€เจ‚ เจ•เฉฐเจชเจพเจˆเจฒ-เจŸเจพเจˆเจฎ เจœเจพเจ‚เจšเจพเจ‚ เจ•เจฐเจจ เจฒเจˆ เจฎเฉˆเจ•เจฐเฉ‹ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค
  2. เจคเฉเจธเฉ€เจ‚ เจธเฉฐเจฐเจšเจจเจพ เจจเฉ‚เฉฐ เจ…เจœเจฟเจนเฉ‡ เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ เจชเฉ‡เจธเจผ เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• DSL เจฒเจพเจ—เฉ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจœเฉ‹ เจ…เฉฐเจคเจฎ เจ‰เจชเจญเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจฒเจˆ เจชเจนเฉเฉฐเจšเจฏเฉ‹เจ— เจนเฉ‹เจตเฉ‡เฅค
  3. เจคเฉเจธเฉ€เจ‚ เจ†เจŸเฉ‹เจฎเฉˆเจŸเจฟเจ• เจ•เฉŒเจ‚เจซเจฟเจ—เจฐเฉ‡เจธเจผเจจ เจเจกเจœเจธเจŸเจฎเฉˆเจ‚เจŸ เจฆเฉ‡ เจจเจพเจฒ เจ—เจคเฉ€เจธเจผเฉ€เจฒ เจธเจฐเฉ‹เจค เจชเฉเจฐเจฌเฉฐเจงเจจ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจ‡เฉฑเจ• เจ•เจฒเฉฑเจธเจŸเจฐ เจตเจฟเฉฑเจš เจจเฉ‹เจกเจพเจ‚ เจฆเฉ€ เจธเฉฐเจ–เจฟเจ† เจจเฉ‚เฉฐ เจฌเจฆเจฒเจฃ เจฒเจˆ เจ‡เจน เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ เจ•เจฟ (1) เจนเจฐเฉ‡เจ• เจจเฉ‹เจก เจจเฉ‚เฉฐ เจฅเฉ‹เฉœเฉเจนเจพ เจตเฉฑเจ–เจฐเจพ เจธเฉฐเจฐเจšเจจเจพ เจชเฉเจฐเจพเจชเจค เจนเฉ‹เจตเฉ‡; (2) เจ•เจฒเฉฑเจธเจŸเจฐ เจฎเฉˆเจจเฉ‡เจœเจฐ เจจเฉ‡ เจจเจตเฉ‡เจ‚ เจจเฉ‹เจกเจพเจ‚ เจฌเจพเจฐเฉ‡ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเฉ€เฅค

เจชเฉเจฐเจตเจพเจจเจ—เฉ€

เจฎเฉˆเจ‚ เจกเจฐเจพเจซเจŸ เจฒเฉ‡เจ– เจฆเฉ€ เจฐเจšเจจเจพเจคเจฎเจ• เจ†เจฒเฉ‹เจšเจจเจพ เจฒเจˆ เจ†เจ‚เจฆเจฐเฉ‡เจˆ เจธเจ•เจธเฉ‹เจจเฉ‹เจต, เจชเจพเจตเฉ‡เจฒ เจชเฉ‹เจชเฉ‹เจต เจ…เจคเฉ‡ เจเจ‚เจŸเฉ‹เจจ เจจเฉ‡เจ–เจพเจเจต เจฆเจพ เจงเฉฐเจจเจตเจพเจฆ เจ•เจฐเจจเจพ เจšเจพเจนเจพเจ‚เจ—เจพเฅค

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹