/images/avatar.png

๐Ÿž๐Ÿฅ๐Ÿฅ– ๋ผ์ผ๋ฆฌ์˜ ์ฝ”๋“œ ๋ถ€์Šค๋Ÿฌ๊ธฐ ๐Ÿž๐Ÿฅ๐Ÿฅ–

[Node.js] NVM์„ ์ด์šฉํ•˜์—ฌ Node.js ์„ค์น˜ํ•˜๊ธฐ

Installation and Update 1. NVM ์„ค์น˜ Git Repo์˜ NVM์˜ README ํŒŒ์ผ์„ ์ฐธ๊ณ ํ•œ๋‹ค. https://github.com/nvm-sh/nvm 1 curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.1/install.sh | bash 2. NVM ํ™˜๊ฒฝ์„ค์ • .bashrc ํ˜น์€ .zshrc ์— ์ถ”๊ฐ€ํ•œ๋‹ค. source ~/.bashrc ๋กœ ์ ์šฉ ๋˜๋Š” ํ„ฐ๋ฏธ๋„์„ ์žฌ์‹œ์ž‘ํ•œ๋‹ค. 1 2 export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm 3. nvm ๋ฒ„์ „ํ™•์ธ ๋ฐ ์„ค์น˜ ๊ฐ€๋Šฅ Nodejs ๋ฆฌ์ŠคํŠธ ํ™•์ธ 1 2 3 4 5 # nvm ๋ฒ„์ „ ํ™•์ธ nvm --version # ์„ค์น˜ ๊ฐ€๋Šฅ NodeJs ๋ฒ„์ „ ํ™•์ธ nvm ls-remote 4.

[์ž๋ฐ” ORM ํ‘œ์ค€ JPA ํ”„๋กœ๊ทธ๋ž˜๋ฐ] 1์žฅ JPA ์†Œ๊ฐœ

์ž๋ฐ” ORM ํ‘œ์ค€ JPA ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ•™์Šต ๋‚ด์šฉ ์ •๋ฆฌํ•œ ํฌ์ŠคํŒ… ์ž…๋‹ˆ๋‹ค. 1.1 SQL์„ ์ง์ ‘ ๋‹ค๋ฃฐ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์  ์ฝ”๋“œ์˜ ๋ฐ˜๋ณต์ž‘์„ฑ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๊ฐ์ฒด ๊ตฌ์กฐ์™€๋Š” ๋‹ฌ๋ฆฌ ๋ฐ์ดํ„ฐ ์ค‘์‹ฌ์˜ ๊ตฌ์กฐ๋ฅผ ๊ฐ–๋Š”๋‹ค. ๊ฐ์ฒด๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— CRUD ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋„ˆ๋ฌด ๋งŽ์€ SQL๊ณผ JDBC API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ€ํ™˜์ž‘์—…์„ ์ง์ ‘ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. SQL ์— ์˜์กด์ ์ธ ๊ฐœ๋ฐœ ๊ฐ์ฒด๋“ค์ด ์–ด๋–ค ์—”ํ‹ฐํ‹ฐ๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋Š”์ง€ DAO(๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๊ณ„์ธต)์„ ์—ด์–ด SQL๋ฅผ ํ™•์ธํ•ด์•ผ๋งŒ ํ•œ๋‹ค. SQL๊ณผ JDBC API๋ฅผ DAO์— ์€๋‹‰ํ™”ํ•˜์˜€์ง€๋งŒ ๋…ผ๋ฆฌ์ ์œผ๋กœ๋Š” ์—”ํ‹ฐํ‹ฐ์™€ ์•„์ฃผ ๊ฐ•ํ•œ ์˜์กด๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

[Mastering Spring 5.0] 6.1 ์˜ˆ์™ธ์ฒ˜๋ฆฌ

์Šคํ”„๋ง 5.0 ๋งˆ์Šคํ„ฐ ์Šคํ„ฐ๋”” ์Šคํ”„๋ง 5.0 ๋งˆ์Šคํ„ฐ ์Šคํ„ฐ๋”” ํ•™์Šต ๋‚ด์šฉ ์ •๋ฆฌ์ž…๋‹ˆ๋‹ค. 1. ์Šคํ”„๋ง ๋ถ€ํŠธ์˜ ๊ธฐ๋ณธ ์˜ˆ์™ธ์ฒ˜๋ฆฌ ์Šคํ”„๋ง๋ถ€ํŠธ์˜ ๊ธฐ๋ณธ ์˜ˆ์™ธ ํ˜•์‹์€ throw ๋œ ์˜ˆ์™ธ ๋ฉ”์„ธ์ง€ ์™€ ํ•จ๊ป˜ JSON ํ˜•ํƒœ๋กœ ์—๋Ÿฌ๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค. ๋ธŒ๋ผ์šฐ์ €๊ฒฝ์šฐ ๊ธฐ๋ณธ ์˜ค๋ฅ˜ ํŽ˜์ด์ง€ (Whilelabel Error Page) ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. 1 2 3 4 5 6 7 { "timestamp": "2018-12-07T05:01:26.483+0000", "status": 500, "error": "Internal Server Error", "message": "Some Exception Occurred", "path": "/users/dummy-service" } 2. ์Šคํ”„๋ง ์‚ฌ์šฉ์ž ์ •์˜ ์˜ˆ์™ธ์ฒ˜๋ฆฌ ์Šคํ”„๋ง์—์„œ๋Š” ์˜ค๋ฅ˜์— ๋Œ€ํ•œ ์‘๋‹ต์„ ์‚ฌ์šฉ์ž๊ฐ€ ์ •์˜ํ•˜๋Š” ์—ฌ๋Ÿฌ ์˜ต์…˜์„ ์ œ๊ณตํ•œ๋‹ค.

[Elasticsearch ๊ฒ€์ƒ‰ ์—”์ง„ ๊ตฌ์ถ• ๊ฐ•์˜] Elasticsearch ๊ธฐ๋ณธ ๋™์ž‘

1. ์ธ๋ฑ์Šค ์ƒ์„ฑํ•˜๊ธฐ ์ธ๋ฑ์Šค๋Š” ๋ฌธ์„œdocument์˜ ๋ชจ์Œ์ด๋‹ค. ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ• Index Settings๋ฅผ ์ •์˜ํ•œ๋‹ค. Index Mappings๋ฅผ ์ •์˜ํ•œ๋‹ค. ์‚ฌ์šฉ์ž ์ •์˜๋œ ๋„ํ๋จผํŠธ๋ฅผ ์ธ๋ฑ์‹ฑํ•œ๋‹ค. 2. ์ธ๋ฑ์Šค์˜ settings Static Index Settings index.number_of_shards : ์ธ๋ฑ์Šค๊ฐ€ ๊ฐ€์ ธ์•ผ ํ•˜๋Š” Primary ์ƒค๋“œ์˜ ๊ฐœ์ˆ˜ ์„ค์ •. ๊ธฐ๋ณธ๊ฐ’ 5 Dynamic Index Settings index.number_of_replicas : ๊ฐ ๊ธฐ๋ณธ ์ƒค๋“œ์˜ ๋ณต์ œ๋ณธ (Replica ์ƒค๋“œ ๊ฐœ์ˆ˜ ์„ค์ •). ๊ธฐ๋ณธ๊ฐ’์€ 1 index.refresh_interval : ๊ฒ€์ƒ‰ commit point ๋ฅผ ๋งŒ๋“œ๋Š” refresh interval ์„ค์ • (์ƒˆ๋กœ ๊ณ ์นจ ์ž‘์—…์ˆ˜ํ–‰ ๋นˆ๋„). -1 ๋น„ํ™œ์„ฑํ™”. ๊ธฐ๋ณธ๊ฐ’ 1s index.routing.allocation.enable : ์ธ๋ฑ์Šค์˜ ์ƒค๋“œ๋“ค์˜ ๋ผ์šฐํŒ… ํ—ˆ์šฉ ์„ค์ • Other Settings Analysis, Mapping, Slowlog … 3.

[Elasticsearch ๊ฒ€์ƒ‰ ์—”์ง„ ๊ตฌ์ถ• ๊ฐ•์˜] ๊ทธ ์™ธ ์„ค์ •

limits.conf Elasticsearch ๋Š” ๋งŽ์€ ํŒŒ์ผ์„ ์“ฐ๊ฑฐ๋‚˜ ํ•ธ๋“ค๋งํ•˜๊ฒŒ ๋œ๋‹ค. ์—ด ์ˆ˜ ์žˆ๋Š” File descriptor๊ฐ€ ๋ถ€์กฑํ•˜๋ฉด ๋ฐ์ดํ„ฐ์˜ ์†์‹ค๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ File Descriptor ๋ฅผ 65,536 ๊ฐœ ์ด์ƒ์œผ๋กœ ์„ค์ •ํ•˜๋„๋ก ํ•œ๋‹ค. vi /etc/security/limits.conf 1 2 elasticsearch soft nofile 65536 elasticsearch hard nofile 65536 Thread ์ˆ˜ Elasticsearch ๋Š” ์—ฌ๋Ÿฌ ์œ ํ˜•์˜ ์ž‘์—…์— ๋Œ€ํ•ด ๋งŽ์€ Thread Pool์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค. Elasticsearch ์‚ฌ์šฉ์ž๊ฐ€ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” Thread ๊ฐ€ 4096 ๊ฐœ ์ด์ƒ์ธ์ง€ ํ™•์ธํ•œ๋‹ค. 1 2 elasticsearch soft noproc 4096 elasticsearch hard noproc 4096 Sysconfig file RPM ๋˜๋Š” Debian ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ์Šคํ…œ ์„ค์ • ๋ฐ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

[Elasticsearch ๊ฒ€์ƒ‰ ์—”์ง„ ๊ตฌ์ถ• ๊ฐ•์˜] log4j2.properties

log4j2.properties Elasticsearch๋Š” ๋กœ๊น…์„ ์œ„ํ•ด Log4j2๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. Log4j2๋Š” log4j2.properties ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ๋กœ๊ทธ์ฐธ์กฐ ํŒŒ์ผ ${sys:es.logs.base_path} ๋กœ๊ทธ์˜ Base ๋””๋ ‰ํ† ๋ฆฌ elasticsearch.yml ์˜ path.log์— ์„ค์ •๋œ ๊ฒฝ๋กœ ${sys:es.logs.cluster_name} ํด๋Ÿฌ์ŠคํŠธ ์ด๋ฆ„์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. elasticsearch.yml ์˜ cluster.name์œผ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ${sys:es.logs.node_name} ๋…ธ๋“œ์˜ ์ด๋ฆ„์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. elasticsearch.yml ์˜ node.name์œผ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. 1 2 ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}.log /var/log/elasticsearch/mycluster.log