[AWS] Neptune
Neptune์ ๊ทธ๋ํํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ๊ณตํ๋ ๊ด๋ฆฌํ ์๋น์ค๋ค.
๊ทธ๋ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋?
์ฌ๊ธฐ์ ๋งํ๋ ๊ทธ๋ํ๋, ํต๊ณ์ ์ฐ๋ ๊ทธ๋ํ๊ฐ ์๋๋ผ ์๋ฃ๊ตฌ์กฐ์์ ๋งํ๋ ๊ทธ๋ํ๋ค.

์ด๋ ๊ฒ ๋ง ์ฌ๋ฐฉ์ผ๋ก ์ฎ์ฌ์๋๊ฑฐ ๋ง์ด๋ค.
๊ทธ๋์ ๋ง ๋ณต์กํ๊ฒ ์๋ก ๊ด๊ณ์ฑ์ ๊ฐ๊ณ ์ฎ์ฌ์๋ ๊ตฌ์กฐ๋ฅผ ํํํ๊ธฐ ์ข๋ค.
์ธ์ด
๊ทธ๋ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ค๋ SQL์ฒ๋ผ ์๊ธฐ๋ค๋ง์ ์ฟผ๋ฆฌ ์ธ์ด๋ฅผ ์ฌ์ฉํ๋ค.
๋ตํ ์ ๊ทธ ์ค์์ Gremlin, openCypher, SPARQL์ ์ง์ํ๋ค.
๋น์ฉ
๋น์ฐํ ๋น์ธ๋ค. ๊ฝค ๋น์ธ๋ค.
์์ธํ๊ฑด ์๋ ๋น์ฉํ๋ฅผ ์ฐธ๊ณ ํ๊ธธ ๋ฐ๋๋ค.
https://aws.amazon.com/ko/neptune/pricing/
๋น์ฉ์ ์ธ์คํด์ค ์ฌ์ด์ฆ, ์ ์ฅ๊ณต๊ฐ, IO, ๋ฐ์ดํฐ ์ ์ก์ผ๋ก ํฉ์ฐ๋๋ค.
AWS์์ ์ ์ํ ๋น์ฉ ์์๋ค.

ํด๋ฌ์คํฐ ์์ฑ
๋ง๋ค์ด๋ณด์.
๋ ํ
์คํธ๋ชจ๋๋ก ์ ํํ๋ค.
๊ฐ๋ฐ์ฉ์ด๋ฉด ๊ฐ์ฉ์์ญ์ ํ๋๋ง ์์ด๋ ๋์ง๋ง, ํ๋ก๋์
์ฉ์ด๋ผ๋ฉด 2๊ฐ ์ด์ ๋๊ธฐ๋ฅผ ๊ถ์ฅํ๋ค.
๊ทธ๋ฆฌ๊ณ VPC๋ ์ ์คํ๊ฒ ์ ํํ๋ค. ์ ์์์๋ง ์ ์ํ ์ ์๋ค.
๋
ธํธ๋ถ์.. ๋น์ฅ ์ธ๊ฑด ์๋์ง๋ง ์ผ๋จ ์ค์ ์ ํด๋๋ค.
๊ทธ๋์ ์ด๋ฐ์์ผ๋ก ์์ฑ๋๊ณ

๋ฐ์ ์๋ํฌ์ธํธ๋ ๋ค ๋จ๋ฉด ์ ๊น๋ฆฐ ๊ฒ์ด๋ค.

์ ์ํด๋ณด๊ธฐ
์ด๊ฒ๋ DocumentDB, Elasticache ๋ฑ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก VPC ๋ด๋ถ์์๋ง ์ ์์ด ๊ฐ๋ฅํ๋ค.
ํผ๋ธ๋ฆญ ์ก์ธ์ค๊ฐ ๋ถ๊ฐ๋ฅํ๋ค.
๋๋ EC2์์ ์ ๊ทผํด๋ณด๊ฒ ๋ค.
์๋ง์กด ๋ฆฌ๋
์ค๋ก ํด์
์๊น ๋ตํ ๊น๋์ ๋์ผํ ๋ ์์ผ๋ก VPC๋ฅผ ๊น์์ค๋ค.

๊ทธ๋ฆฌ๊ณ ํด๋น ๋ณด์๊ทธ๋ฃน์ ์ธ๋ฐ์ด๋์ ๋ตํ ์ฉ ํฌํธ๋ฅผ ์ด์ด์ค๋ค.
๊ทธ๋ผ ๋๋ค.
๊ทธ๋ ๋ฆฐ ์ค์นํ๊ธฐ
gremlin์ ํน์ ๊ทธ๋ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ง ์ข
์๋์ง ์๋ ๋ฒ์ฉ ๊ทธ๋ํ ์ฟผ๋ฆฌ ์ธ์ด์ด์, ๋๊ตฌ์ด๊ธฐ๋ ํ๋ค.
๋ตํ ๋ ์ด๊ฑธ ์ง์ํ๋ค.
ec2 ์๋ง์กด ๋ฆฌ๋
์ค์์ ์ค์นํ๋ ๋ฒ์ด๋ค.
์๋ ์ปค๋งจ๋๋ค์ ์์๋๋ก ์ ๋ฐ๋ผ์ณ์ค๋ค.
sudo yum install java-1.8.0-develsudo /usr/sbin/alternatives --config javawget https://archive.apache.org/dist/tinkerpop/3.5.2/apache-tinkerpop-gremlin-console-3.5.2-bin.zipunzip apache-tinkerpop-gremlin-console-3.5.2-bin.zipcd apache-tinkerpop-gremlin-console-3.5.2wget https://www.amazontrust.com/repository/SFSRootCAG2.cermkdir /tmp/certs/cp /usr/lib/jvm/jre-1.8.0-openjdk/lib/security/cacerts /tmp/certs/cacertssudo keytool -importcert \
-alias neptune-tests-ca \
-keystore /tmp/certs/cacerts \
-file /home/ec2-user/apache-tinkerpop-gremlin-console-3.5.2/SFSRootCAG2.cer \
-noprompt \
-storepass changeit
๋ค ๊น์์ผ๋ฉด conf ๊ฒฝ๋ก์ ์๊ฒฉ์ ์์ฉ yaml ๊ตฌ์ฑ์ ์์ฑํ๋ค.

hosts: [์๋ํฌ์ธํธ]
port: 8182
connectionPool: { enableSsl: true, trustStore: /tmp/certs/cacerts }
serializer: { className: org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1, config: { serializeResultToString: true }}
์๋ํฌ์ธํธ๋ ์๊น ๋ตํ ์๋ํฌ์ธํธ๋ฅผ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.
๊ทธ๋ฆฌ๊ณ gremlin ์๋ช ๋ น์ ์ ๋ ฅํด์ ์ฝ์์ ๋ค์ด์ค๊ณ ,

๋ค์๊ณผ ๊ฐ์ด ์๊ฒฉ์ ์์ ์๋ํด์
:remote connect tinkerpop.server conf/neptune-remote.yaml
์ด๋ ๊ฒ ๋จ๋ฉด ์ ์ ์ฑ๊ณต์ด๋ค.
์๊ฒฉ์ผ๋ก ์ฟผ๋ฆฌ๋ฅผ ๋ ๋ฆด ์ ์๊ฒ ์ฝ์๋ชจ๋๋ก ์ ํํ์.
:remote console

์ ์ ํ์ด ๋๋ค๋ฉด, ๋ค์๊ณผ ๊ฐ์ด ๊ทธ๋ฅ ํํ์ ๊ณ์ฐ๋ ์ ๋ ๊ฒ์ด๋ค.
๊ทธ๋ผ ์ด์ ์ฌ๊ธฐ์ ๊ทธ๋ํ ์ฟผ๋ฆฌ ์๋ค์ ์ฐ์ฐํ๋ฉด์ ํ์ธํด๋ณผ ์ ์๋ค.
๊ทธ๋ ๋ฆฐ์ ๋ํ ์์ธํ ์ ํ์ค์ ์ฌ์ฉ๋ฒ์ ๋ณ๋ ํฌ์คํธ๋ฅผ ์ฐธ๊ณ ํ๊ธธ ๋ฐ๋๋ค.
https://blog.naver.com/sssang97/222730493357
https://jiwonny.github.io/projects/aws-neptune-1/
https://aws.amazon.com/ko/nosql/graph/
https://jiwonny.github.io/projects/aws-neptune-2/
https://docs.aws.amazon.com/neptune/latest/userguide/graph-get-started.html
https://docs.aws.amazon.com/ko_kr/neptune/latest/userguide/access-graph-gremlin-console.html