เจ‡เฉฑเจ• เจตเฉฐเจกเฉ‡ เจธเจฟเจธเจŸเจฎ เจฆเฉ€ เจ•เฉฐเจชเจพเจ‡เจฒ เจ•เจฐเจจ เจฏเฉ‹เจ— เจธเฉฐเจฐเจšเจจเจพ

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

เจ‡เฉฑเจ• เจตเฉฐเจกเฉ‡ เจธเจฟเจธเจŸเจฎ เจฆเฉ€ เจ•เฉฐเจชเจพเจ‡เจฒ เจ•เจฐเจจ เจฏเฉ‹เจ— เจธเฉฐเจฐเจšเจจเจพ

(เจฐเฉ‚เจธเฉ€ เจตเจฟเฉฑเจš)

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

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

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

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

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

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

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

เจ•เฉฐเจชเจพเจ‡เจฒ เจ•เจฐเจจ เจฏเฉ‹เจ— เจธเฉฐเจฐเจšเจจเจพ

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

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

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]]

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

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

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

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

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

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

เจธเจญ เจคเฉ‹เจ‚ เจตเฉฑเจง เจตเจฐเจคเฉ‡ เจœเจพเจฃ เจตเจพเจฒเฉ‡ เจชเฉเจฐเฉ‹เจŸเฉ‹เจ•เฉ‹เจฒเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• Json เจธเฉ€เจฐเฉ€เจ…เจฒเจพเจˆเจœเจผเฉ‡เจธเจผเจจ เจฆเฉ‡ เจจเจพเจฒ REST API เจนเฉˆ:

sealed trait JsonHttpRestProtocol[RequestMessage, ResponseMessage]

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

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

sealed trait SimpleHttpGetRest[RequestMessage, ResponseMessage]

เจ‡เจธ เจชเฉเจฐเฉ‹เจŸเฉ‹เจ•เฉ‹เจฒ เจตเจฟเฉฑเจš เจฌเฉ‡เจจเจคเฉ€ เจธเฉฐเจฆเฉ‡เจธเจผ เจจเฉ‚เฉฐ url เจจเจพเจฒ เจœเฉ‹เฉœเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจœเจตเจพเจฌ เจธเฉเจจเฉ‡เจนเจพ เจธเจพเจฆเฉ€ เจธเจคเจฐ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจตเจพเจชเจธ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค

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

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

  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)
  }

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

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

  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 - เจชเฉเจฐเจญเจพเจต เจตเจฟเฉฑเจš เจซเฉฐเจ•เจธเจผเจจเจพเจ‚ เจฆเจพ เจฐเฉˆเจชเจฐ (เจฒเจ—เจญเจ— เจ‡เฉฑเจ• เจฎเฉ‹เจจเจพเจก) (เจ…เจธเฉ€เจ‚ เจ†เจ–เจฐเจ•เจพเจฐ เจ‡เจธเจจเฉ‚เฉฐ เจ•เจฟเจธเฉ‡ เจนเฉ‹เจฐ เจšเฉ€เจœเจผ เจจเจพเจฒ เจฌเจฆเจฒ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚)

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

  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
}

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

เจจเฉ‹เจก เจเจกเจฐเฉˆเฉฑเจธ เจฐเฉˆเจœเจผเฉ‹เจฒเจฟเจŠเจธเจผเจจ

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

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 เจ…เฉฐเจคเจฐเจพเจฒ เจชเจพเจธเฅค

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

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

  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"
  }

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

เจฆเฉ‹ เจจเฉ‹เจกเจพเจ‚ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจเจพ

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

  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, เจœเจฆเฉ‹เจ‚ เจ•เจฟ เจˆเจ•เฉ‹ เจ•เจฒเจพเจ‡เฉฐเจŸ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เฉ€เจคเฉ€ เจธเฉ€เจฎเจค เจฎเจฟเจ†เจฆ เจฆเฉ‡ เจฌเจพเจ…เจฆ เจธเจฎเจพเจชเจค เจนเฉ‹ เจœเจพเจตเฉ‡เจ—เจพเฅค เจฆเฉ‡เจ–เฉ‹ เจธเจŸเจพเจฐเจŸเจฐ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจตเฉ‡เจฐเจตเฉ‡ เจฒเจˆ.

เจธเจฎเฉเฉฑเจšเฉ‡ เจตเจฟเจ•เจพเจธ เจฆเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ†

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

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

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

เจŸเจฟเจ•เจŸ -> PR -> เจธเจฎเฉ€เจ–เจฟเจ† -> เจ…เจญเฉ‡เจฆ -> เจจเจฟเจฐเฉฐเจคเจฐ เจเจ•เฉ€เจ•เจฐเจฃ -> เจจเจฟเจฐเฉฐเจคเจฐ เจคเฉˆเจจเจพเจคเฉ€

เจชเจนเฉเฉฐเจš เจฆเฉ‡ เจนเฉ‡เจ  เจฆเจฟเฉฑเจคเฉ‡ เจจเจคเฉ€เจœเฉ‡ เจนเจจ:

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

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

เจซเจฐเจ•

เจ†เจ‰ เจนเฉ‹เจฐ เจธเฉฐเจฐเจšเจจเจพ เจชเฉเจฐเจฌเฉฐเจงเจจ เจคเจ•เจจเฉ€เจ•เจพเจ‚ เจฆเฉ‡ เจฎเฉเจ•เจพเจฌเจฒเฉ‡ เจชเฉเจฐเจธเจคเจพเจตเจฟเจค เจชเจนเฉเฉฐเจš เจฆเฉ‡ เจซเจพเจ‡เจฆเฉ‡ เจ…เจคเฉ‡ เจจเฉเจ•เจธเจพเจจ เจฆเฉ‡เจ–เฉ€เจเฅค

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

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

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

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

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

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

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

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

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

เจฒเจพเจญ เจ…เจคเฉ‡ เจตเจฟเฉฑเจค

เจ‡เฉฑเจฅเฉ‡ เจ…เจธเฉ€เจ‚ เจ•เฉเจ เจซเจพเจ‡เจฆเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจ‰เจœเจพเจ—เจฐ เจ•เจฐเจจเจพ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจชเฉเจฐเจธเจคเจพเจตเจฟเจค เจชเจนเฉเฉฐเจš เจฆเฉ‡ เจ•เฉเจ เจจเฉเจ•เจธเจพเจจเจพเจ‚ เจฌเจพเจฐเฉ‡ เจšเจฐเจšเจพ เจ•เจฐเจจเจพ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเจพเจ‚เฅค

เจซเจพเจ‡เจฆเฉ‡

เจ‡เฉฑเจ• เจธเฉฐเจชเฉ‚เจฐเจจ เจตเจฟเจคเจฐเจฟเจค เจธเจฟเจธเจŸเจฎ เจฆเฉ€ เจ•เฉฐเจชเจพเจ‡เจฒ เจ•เจฐเจจ เจฏเฉ‹เจ— เจธเฉฐเจฐเจšเจจเจพ เจฆเฉ€เจ†เจ‚ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚:

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

เจจเฉเจ•เจธเจพเจจ

เจธเฉฐเจ•เจฒเจฟเจค เจธเฉฐเจฐเจšเจจเจพ เจชเจนเฉเฉฐเจš "เจ†เจฎ" เจธเฉฐเจฐเจšเจจเจพ เจคเฉ‹เจ‚ เจตเฉฑเจ–เจฐเฉ€ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจน เจธเจพเจฐเฉ€เจ†เจ‚ เจฒเฉ‹เฉœเจพเจ‚ เจฆเฉ‡ เจ…เจจเฉเจ•เฉ‚เจฒ เจจเจนเฉ€เจ‚ เจนเฉ‹ เจธเจ•เจฆเฉ€ เจนเฉˆเฅค เจ‡เฉฑเจฅเฉ‡ เจ•เฉฐเจชเจพเจ‡เจฒ เจ•เฉ€เจคเฉ€ เจธเฉฐเจฐเจšเจจเจพ เจฆเฉ‡ เจ•เฉเจ เจจเฉเจ•เจธเจพเจจ เจนเจจ:

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

เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเฉ‡ เจ—เจ เจ‰เจฆเจพเจนเจฐเจฃ เจฆเฉ€เจ†เจ‚ เจ•เฉเจ เจธเฉ€เจฎเจพเจตเจพเจ‚ เจนเจจ:

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

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

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

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

เจ‡เจธ เจชเจนเฉเฉฐเจš เจจเฉ‚เฉฐ เจ•เจˆ เจคเจฐเฉ€เจ•เจฟเจ†เจ‚ เจจเจพเจฒ เจตเจงเจพเจ‡เจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ:

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

เจงเฉฐเจจเจตเจพเจฆ

เจฎเฉˆเจ‚ เจ‡เจธ เจชเฉ‹เจธเจŸ เจฆเฉ‡ เจกเจฐเจพเจซเจŸ 'เจคเฉ‡ เจชเฉเจฐเฉ‡เจฐเจฃเจพเจฆเจพเจ‡เจ• เจซเฉ€เจกเจฌเฉˆเจ• เจฆเฉ‡เจฃ เจฒเจˆ เจเจ‚เจกเจฐเฉ€ เจธเจ•เจธเฉ‹เจจเฉ‹เจต, เจชเจพเจตเฉ‡เจฒ เจชเฉ‹เจชเฉ‹เจต, เจเจ‚เจŸเฉ‹เจจ เจจเฉ‡เจนเจพเจเจต เจฆเจพ เจงเฉฐเจจเจตเจพเจฆ เจ•เจฐเจจเจพ เจšเจพเจนเจพเจ‚เจ—เจพ เจœเจฟเจธ เจจเฉ‡ เจ‡เจธ เจจเฉ‚เฉฐ เจธเจชเฉฑเจธเจผเจŸ เจ•เจฐเจจ เจตเจฟเฉฑเจš เจฎเฉ‡เจฐเฉ€ เจฎเจฆเจฆ เจ•เฉ€เจคเฉ€เฅค

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