/SOLscript_server

๐Ÿ‘‹2019 ์‹ ํ•œ ํ•ด์ปคํ†ค - ๊ฒฐ์ œ๋‚ด์šฉ ๋ถ„์„์„ ํ†ตํ•ด ๊ตฌ๋… ์„œ๋น„์Šค ๊ฐ„ํŽธํ™” ๋ฐ ์ถ”์ฒœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜

Primary LanguageJavaScript

SOLscript

๋ฐ€๋ ˆ๋‹ˆ์—„ ์„ธ๋Œ€๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ๊ตฌ๋… ๊ฒฝ์ œ๊ฐ€ ์ผ์ƒ์— ๊นŠ์ˆ™์ด ์ž๋ฆฌ ์žก๊ณ  ์žˆ๋‹ค. ๊ตฌ๋… ๊ฒฝ์ œ(subscription economy)๋ž€ ์†Œ๋น„์ž๊ฐ€ ์ •๊ธฐ์ ์œผ๋กœ ๋น„์šฉ์„ ์ง€๊ธ‰ํ•˜์—ฌ ์›ํ•˜๋Š” ์ƒํ’ˆ์„ ๋ฐฐ์†ก๋ฐ›๊ฑฐ๋‚˜, ์ผ์ • ๊ธฐ๊ฐ„ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ์„ ๋œปํ•œ๋‹ค.

ํ˜„์žฌ ๊ตฌ๋… ๊ฒฝ์ œ๋Š” 2020๋…„ 594์กฐ ์› ์ „๋ง์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ ์†Œ๋น„์˜ ์ƒˆ๋กœ์šด ํŒจ๋Ÿฌ๋‹ค์ž„์œผ๋กœ ์ž๋ฆฌ ์žก์•˜๋‹ค. ํ•˜์ง€๋งŒ ์„œ๋น„์Šค๋ฅผ ๊ตฌ๋งคํ•˜๋˜ ๊ธฐ์กด์˜ ๋ฐฉ์‹์ด ์ต์ˆ™ํ•œ ์†Œ๋น„์ž๋“ค์€ ์—ฌ์ „ํžˆ ์ œํ•œ์ ์ธ ์„œ๋น„์Šค๋งŒ์„ ์ด์šฉํ•˜๊ฑฐ๋‚˜, ๋‹ค์–‘ํ•œ ๊ฒฐ์žฌ์ฒด๊ณ„๋กœ ํฉ์–ด์ ธ ๊ตฌ๋… ์ค‘์ธ ์„œ๋น„์Šค๋กœ ์ธํ•ด ๊ด€๋ฆฌ์— ์–ด๋ ค์›€์„ ๊ฒช๊ณ  ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ ํŒ€์€ ์‹ ํ•œ ๊ณ„์—ด์‚ฌ๋“ค์˜ API๋“ค์„(๋ชฉ๋ก ์•„๋ž˜ ๊ธฐ์ œ) ์‚ฌ์šฉํ•˜์—ฌ์„œ ํ†ตํ•ฉ์ ์œผ๋กœ ๊ตฌ๋… ์„œ๋น„์Šค๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ํ”Œ๋žซํผ์„ ๋งŒ๋“ค๊ณ ์ž ํ•œ๋‹ค.\

ํ•ด์ปคํ†ค ํ›„๊ธฐ: ์œค์ž์ด ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ




Features

  • ์‹ ํ•œ๊ทธ๋ฃน API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ณ„์ขŒ, ์นด๋“œ ๋“ฑ๋กํ›„ ๊ตฌ๋… ๊ฐ„ํŽธํ™”.
  • ์‹ ํ•œ๊ทธ๋ฃน API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์œ ์ €์˜ ๊ตฌ๋… ์„œ๋น„์Šค ์ž๋™ ์ถ”์ถœ.
  • ์ฑ—๋ด‡๊ณผ ๋Œ€ํ™”๋ฅผ ํ†ตํ•œ ์‚ฌ์šฉ์ž์˜ ์ทจํ–ฅ ๋ถ„์„.
  • ์œ ์ €์˜ ๊ตฌ๋… ์„œ๋น„์Šค ์‚ฌ์šฉํŒจํ„ด ๋ถ„์„.
  • ์Šคํฌ๋ฆฐ ํƒ€์ž„ ์กฐํšŒ๋ฅผ ํ†ตํ•ด ์ด์ „ ๋‹ฌ๊ณผ์˜ ์‚ฌ์šฉ๋ฅ ์„ ๋น„๊ตํ•œ ํ†ต๊ณ„ ์ œ๊ณต.


API Description


Usage Video

  • ์•„๋ž˜ ์ด๋ฏธ์ง€ ํด๋ฆญ
    Video




Foldering

Module Router





Usage Package

"dependencies": {
    "dialogflow": "^0.14.1",
    "dialogflow-fulfillment": "^0.6.1",
    "actions-on-google": "^2.12.0"
  }

NLP Model๋กœ Google Dialogflow๋ฅผ ์‚ฌ์šฉํ–ˆ๊ณ , Google Client Library๋ฅผ ์‚ฌ์šฉํ•ด์„œ SOLscript์„œ๋ฒ„๋ฅผ proxy server๋กœ ์ด์šฉ ๋ฐ, webhook์„ ์ด์šฉํ•ด fulfillment์ฒ˜๋ฆฌ๋ฅผ ํ•˜์˜€๋‹ค.


"dependencies": {
    "aws-sdk": "^2.575.0",
    "multer": "^1.4.2",
    "multer-s3": "^2.9.0",
    "mongoose": "^5.7.12"
}

Database๋กœ MongoDB์™€ AWS์˜ S3๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค.


"dependencies": {
    "request": "^2.88.0",
    "request-promise": "^4.2.5"
}

Shinhan Bank, Shinhan Card API๋ฅผ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด request-promise(request dependency์— ์˜์กด์ )๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค.





Core Technology

Dialogflow

SOLscript๋Š” ์ฑ—๋ด‡ soly์™€์˜ ๋Œ€ํ™”๋ฅผ ํ†ตํ•ด ์œ ์ €์˜ ์ทจํ–ฅ์„ ๋ถ„์„ํ•œ ํ›„ ์œ ์ €์—๊ฒŒ ๋งž์ถคํ˜• ๊ตฌ๋… ์„œ๋น„์Šค๋ฅผ ์ถ”์ฒœํ•ด์ค€๋‹ค. ์ทจํ–ฅ ๋ถ„์„์€ Price, Category, Feel ์ด 3๊ฐ€์ง€์˜ ๊ธฐ์ค€์œผ๋กœ ๋ถ„์„ํ•˜๋ฉฐ, ์œ ์ €๊ฐ€ ์ •ํ˜•ํ™”๋˜์ง€ ์•Š์€ ๋‹ต๋ณ€์„ ํ•˜๋”๋ผ๋„ ์ฑ—๋ด‡์ด ํ•ด๋‹น ๋ฐœํ™”์˜ Entity๋ฅผ ์ถ”์ถœํ•˜์—ฌ ์ค€๋น„๋œ ํ‚ค์›Œ๋“œ์— ๋งตํ•‘์‹œํ‚จ๋‹ค. ๋˜ํ•œ ์‚ฌ์šฉ์ž์˜ ๊ตฌ๋… ์„œ๋น„์Šค ํ˜„ํ™ฉ์ด๋‚˜, ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๊ตฌ๋… ์„œ๋น„์Šค ํ˜„ํ™ฉ ๋“ฑ์— ๋Œ€ํ•œ ์งˆ๋ฌธ์„ Database์ ‘๊ทผ ๋ฐ ๋‚ด๋ถ€ ๋กœ์ง์„ ํ†ตํ•ด ๋‹ต๋ณ€ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฐธ๊ณ ์ž๋ฃŒ: Dialogflow Reference


Shinhan API

์‹ ํ•œ์€ํ–‰ ๋ฐ ์นด๋“œ API๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์นด๋“œ๋ฅผ ๋“ฑ๋กํ•ด์„œ ๊ฐ„ํŽธํ•˜๊ฒŒ ๊ตฌ๋… ์„œ๋น„์Šค๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์˜€๊ณ , ์œ ์ €์˜ ์นด๋“œ ์‚ฌ์šฉ๋‚ด์—ญ์„ ์กฐํšŒ ๋ฐ ํŒŒ์‹ฑํ•˜์—ฌ ์‚ฌ์šฉ์ž์˜ ๊ตฌ๋… ์„œ๋น„์Šค ์‚ฌ์šฉํŒจํ„ด์„ ๋ถ„์„ํ•œ ํ›„ ์ œ๊ณตํ•˜์˜€๋‹ค.




Application Lifecycle Management

Agile

1. ํŒ€์›๊ณผ์˜ ๊ธฐ์ˆ ์Šคํƒ์„ ๋งž์ถ˜๋‹ค.
ํ•ด์ปคํ†ค์ด ์‹œ์ž‘๋˜๊ธฐ์ „ ํŒ€์›๋“ค๊ณผ์˜ ๊ธฐ์ˆ ์Šคํƒ์„ ๋งž์ถ”๊ณ , foldering์ด๋‚˜ code convention๊ณผ ๊ฐ™์€ ๋ถ€๋ถ„๋“ค์„ ๋ฏธ๋ฆฌ ์ ๊ฒ€ํ•˜์˜€๋‹ค. ๊ทธ๋กœ ์ธํ•ด ํ•ด์ปคํ†ค ๋‹น์ผ git merge๋กœ ์ธํ•œ comflict๋ฅผ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ , ์—…๋ฌด ๋ถ„๋ฐฐ์— ์žˆ์–ด์„œ ์œ ๋™์ ์ด์—ˆ๋‹ค.

2. ๋‚ด๋ถ€์  ํ˜‘๋ ฅ
๋‹น์ผ์— ๊ณต๊ฐœ๋˜๋Š” api๋กœ ์ธํ•ด ์„ค๊ณ„์— ๋Œ€ํ•œ ๋ถˆํ™•์‹ค์„ฑ์ด ์žˆ์—ˆ๋‹ค. ๋•Œ๋ฌธ์— ๋ชจ๋“  ๋ถ€๋ถ„์„ ์„ค๊ณ„ํ•˜๊ธฐ๋ณด๋‹จ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์— ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋‘๊ณ  ํ•ด์ปคํ†ค ๋‹น์ผ์— ์• ์ž์ผํ•˜๊ฒŒ ์„ค๊ณ„ ๋ฐ ๊ฐœ๋ฐœ์„ ์ด์–ด๋‚˜๊ฐ”๋‹ค. ์ด๋กœ์ธํ•ด ์˜ˆ์ƒํ•˜์ง€ ๋ชปํ–ˆ๋˜ ์—๋Ÿฌ๋ฅผ ๋งŒ๋‚˜๊ฒŒ ๋˜์—ˆ์„ ๋•Œ ์œ ๋™์ ์œผ๋กœ ์„ค๊ณ„๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  ํ•™์Šตํ•˜๋ฉฐ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

3. ํ”ผ๋“œ๋ฐฑ
5 ~ 6์‹œ๊ฐ„์— ํ•œ๋ฒˆ์”ฉ ์ฃผ๊ธฐ์ ์œผ๋กœ ํ”ผ๋“œ๋ฐฑ์„ ์ฃผ๊ณ ๋ฐ›๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์กŒ๋‹ค. ํ”ผ๋“œ๋ฐฑ์„ ํ†ตํ•ด ๋””์ž์ธ๊ณผ์˜ ์ ˆ์ถฉ์•ˆ, ํด๋ผ์ด์–ธํŠธ์™€์˜ ํ†ต์‹ ์— ๊ด€ํ•œ ๋ถ€๋ถ„์„ ์ง€์†์ ์œผ๋กœ ์ฒดํฌํ•˜์˜€๋‹ค. ์ง€์†์ ์ธ ํ”ผ๋“œ๋ฐฑ์„ ํ†ตํ•ด ๊ฐ ํŒŒํŠธ๊ฐ„์˜ ์ง„ํ–‰์ƒํ™ฉ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ , ์ด๋Ÿฌํ•œ ์‹œ๋„ˆ์ง€ ํšจ๊ณผ๋Š” ํ”„๋กœ์ ํŠธ์— ๊ธฐ์—ฌ๋˜์—ˆ๋‹ค.




Application Image

MainActivity MyPageActivity CardInfoActivity
image image image
CardActivity CardRegisterActivity ChatActivity
image image image
SubscriptCalenderFragment SubscriptCalenderFragment SubscriptManageFragment
image image image
AnalysisActivity CategoryFragment DetailedActivity CategoryContentFragment
image image image image