Skip to content
@sysone-3

Snapshot

QURE โ€” QR ์‹œ์„ค ๊ด€๋ฆฌ ์„œ๋น„์Šค

image

QR ํƒœ๊ทธ๋กœ ์ ๊ฒ€๊ณผ ๋ฏผ์›์„ ํ•œ ํ”Œ๋žซํผ์—์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ํ’€์Šคํƒ ์›น์•ฑ
ํด๋ผ์šฐ๋“œ 3-Tier(์›น/์• ํ”Œ๋ฆฌ์ผ€์ด์…˜/DB) ๊ตฌ์กฐ, ๋ชจ๋ฐ”์ผ ํ˜„์žฅ ์‚ฌ์šฉ ์ตœ์ ํ™”


1) ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

  • ๊ธฐ๊ฐ„: 2025-09-03 ~ 2025-09-16 (2์ฃผ)
  • ํŒ€: 3์กฐ SNAPSHOT (๊น€๋ฏผ์„œ, ๊ตฌํฌ์›, ์ตœ์˜จ์œ , ์ตœ์ด์„œ)
  • ๋ชฉ์ : ์ข…์ด ์ ๊ฒ€ํ‘œยท์ „ํ™” ๋ฏผ์›์„ ๋””์ง€ํ„ธ ์ „ํ™˜. ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ๋กœ ์˜ˆ๋ฐฉ์  ๊ด€๋ฆฌ์™€ ์ฒ˜๋ฆฌ ์†๋„ ํ–ฅ์ƒ.

2) ์ฃผ์š” ๊ธฐ๋Šฅ

๊ด€๋ฆฌ์ž(Admin)

  • ์„ค๋น„ ๊ด€๋ฆฌ
    • ์„ค๋น„ ๋“ฑ๋ก/์ˆ˜์ •/์‚ญ์ œ, ๋„๋ฉ”์ธ(์†Œ๋ฐฉยท์ˆœ์ฐฐยท๋ฏธํ™”) ๋ถ„๋ฅ˜, ์ƒํƒœ/์œ„์น˜(GPS) ๊ด€๋ฆฌ
    • ์„ค๋น„๋ณ„ QR ์ฝ”๋“œ ๋ฐœ๊ธ‰ยทํ๊ธฐ ๋ผ์ดํ”„์‚ฌ์ดํด, ์ผ๊ด„ ๋ฐœ๊ธ‰
    • ๊ฒ€์ƒ‰/ํ•„ํ„ฐ: ๋„๋ฉ”์ธ, ์„ค๋น„๋ช…, ์ƒํƒœ, ์ตœ๊ทผ ์ ๊ฒ€์ผ
  • ์ ๊ฒ€ ๊ด€๋ฆฌ
    • ํ…œํ”Œ๋ฆฟ ๊ธฐ๋ฐ˜ ์ฒดํฌ๋ฆฌ์ŠคํŠธ: ํ•ญ๋ชฉ ํƒ€์ž…(BOOL/NUM/TEXT/IMAGE), ํ•„์ˆ˜ ์—ฌ๋ถ€, ๊ฐ€์ด๋“œ, ๋ฒ”์œ„ ๊ฒ€์ฆ(min/max/step)
    • ์ œ์ถœ ๊ฒ€์ฆ: ํ•„์ˆ˜ํ•ญ๋ชฉ ๋ˆ„๋ฝ ๊ธˆ์ง€, ์ค‘๋ณต ์ œ์ถœ ๋ฐฉ์ง€, ์œ„์น˜ ์ผ์น˜ ์‹คํŒจ ์‹œ ๋ฐ˜๋ ค
    • ์ด๋ ฅ/๋กœ๊ทธ: ์ ๊ฒ€์ž, ์‹œ๊ฐ„, ์œ„์น˜, ๊ฒฐ๊ณผ ๋ณ€๊ฒฝ ์ถ”์ 
  • ๋ฏผ์› ๊ด€๋ฆฌ
    • ์ ‘์ˆ˜โ†’์ฒ˜๋ฆฌ์ค‘โ†’์™„๋ฃŒ ์›Œํฌํ”Œ๋กœ ์ƒํƒœ ์ „ํ™˜ ๋ฐ ์ฝ”๋ฉ˜ํŠธ ๊ธฐ๋ก
    • ์œ ํ˜• ๋ถ„๋ฅ˜, ์ฒจ๋ถ€(์ด๋ฏธ์ง€) ์กฐํšŒ, ์„ค๋น„์™€ ์—ฐ๊ณ„๋œ ํžˆ์Šคํ† ๋ฆฌ ํ™•์ธ
  • ๋Œ€์‹œ๋ณด๋“œ/๋ฆฌํฌํŠธ
    • ์˜ค๋Š˜ ์˜ˆ์ • ์ ๊ฒ€ ์™„๋ฃŒ/์ „์ฒด ์ง„ํ–‰๋ฅ , ์ตœ๊ทผ 10์ผ ์ถ”์ด(ํด๋ฆญ ๋“œ๋ฆด๋‹ค์šด)
    • ๋ฏธ์ ๊ฒ€/์ง€์—ฐ ์„ค๋น„ ์นด์šดํŠธ, ๋„๋ฉ”์ธ๋ณ„ ๋ถ„ํฌ
  • ์ง€๋„(์‹œ์„ค ํ˜„ํ™ฉ)
    • Kakao Map ๊ธฐ๋ฐ˜ GPS ๋งˆ์ปค, ํด๋Ÿฌ์Šคํ„ฐ๋ง, ์ƒํƒœ์ƒ‰์ƒ(์ •์ƒ/์ฃผ์˜/์ด์ƒ)
    • ํŒ์—…: ์„ค๋น„๋ช…, ์ฃผ์†Œ, ์ตœ๊ทผ ์ ๊ฒ€์ผ, ํ˜„์žฌ ์ƒํƒœ, ์ƒ์„ธ ๋งํฌ
  • ์ธ์ฆ/๊ถŒํ•œ
    • ์นด์นด์˜ค OAuth2 + Spring Security, ๊ด€๋ฆฌ์ž ๊ถŒํ•œ ๊ตฌ๋ถ„
    • ์„ธ์…˜/๋ณด์•ˆ ํ—ค๋”, HTTPS ์ „์ œ(OCI)

์ ๊ฒ€์ž(Inspector)

  • QR ํƒœ๊ทธ ์ง„์ž… + PIN ๊ฒ€์ฆ
    • ์„ค๋น„๋ณ„ PIN ํ™•์ธ ํ›„ ์ฒดํฌ๋ฆฌ์ŠคํŠธ ์ ‘๊ทผ ํ—ˆ์šฉ
  • ๋ชจ๋ฐ”์ผ ์ฒดํฌ๋ฆฌ์ŠคํŠธ
    • ํ…œํ”Œ๋ฆฟ ์ž๋™ ๋กœ๋”ฉ, ์ž…๋ ฅ ์œ ํšจ์„ฑ(ํ•„์ˆ˜/๋ฒ”์œ„/ํ˜•์‹) ์ฆ‰์‹œ ๊ฒ€์ฆ
    • ์‚ฌ์ง„ ์—…๋กœ๋“œ โ†’ AWS S3 ์ €์žฅ, ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ DB ์—ฐ๋™
  • ์œ„์น˜ ๊ธฐ๋ฐ˜ ์ œ์ถœ ๋ณดํ˜ธ
    • Geolocation API๋กœ ํ˜„์žฌ ์œ„์น˜ ํš๋“
    • ์„ค๋น„ ์ขŒํ‘œ์™€ ํ—ˆ์šฉ ๋ฐ˜๊ฒฝ ๋น„๊ต ํ›„ ๋ถˆ์ผ์น˜ ์‹œ ์ œ์ถœ ์ฐจ๋‹จ
  • ์ œ์ถœ ์‹ ๋ขฐ์„ฑ
    • ์ด์ค‘ ์ œ์ถœ ๋ฐฉ์ง€ ํ† ํฐ, ์‹คํŒจ ์‹œ ๋ถ€๋ถ„ ๋กค๋ฐฑ, ์„œ๋ฒ„์ธก ์žฌ๊ฒ€์ฆ

๋ฏผ์›์ธ(Citizen)

  • QR ๊ธฐ๋ฐ˜ ์›ํ„ฐ์น˜ ์‹ ๊ณ 
    • ์„ค๋น„ ์‹๋ณ„ ์ž๋™ ๋งคํ•‘, ์œ ํ˜• ์„ ํƒ + ์ƒ์„ธ ๋‚ด์šฉ ์ž…๋ ฅ
  • ์ฒจ๋ถ€ ๋ฐ ์—ฐ๋ฝ
    • ์‚ฌ์ง„ ์ฒจ๋ถ€(S3), ์„ ํƒ์  ์ด๋ฉ”์ผ ๊ธฐ์žฌ
  • ์ฒ˜๋ฆฌ ํ”ผ๋“œ๋ฐฑ
    • ์ ‘์ˆ˜ ์™„๋ฃŒ ์•ˆ๋‚ด, ์ƒํƒœ ๋ณ€๊ฒฝ ์•Œ๋ฆผ(ํŽ˜์ด์ง€ ๊ธฐ์ค€)

๊ณตํ†ต(ํ”Œ๋žซํผ)

  • ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ
    • ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ, ํ•„์ˆ˜/์™ธ๋ž˜ํ‚ค ์ œ์•ฝ ์ค€์ˆ˜, ์„œ๋ฒ„์ธก ์ตœ์ข… ๊ฒ€์ฆ
  • ๊ฐ์‚ฌ ๊ฐ€๋Šฅ์„ฑ
    • ๋ชจ๋“  ์ค‘์š” ์ด๋ฒคํŠธ(๋กœ๊ทธ์ธ, ์ ๊ฒ€/๋ฏผ์› ์ƒ์„ฑยท์ˆ˜์ •) ๊ฐ์‚ฌ ๋กœ๊ทธ ๊ธฐ๋ก
  • ํ™•์žฅ์„ฑ
    • 3-Tier ๊ตฌ์กฐ(์›น/Tomcat/Oracle), ์ •์  ์ž์‚ฐ ๋ถ„๋ฆฌ, ์™ธ๋ถ€ API ๋ชจ๋“ˆํ™”

3) ์•„ํ‚คํ…์ฒ˜

image
  • Front-end: JSP/JSTL
  • Back-end: Spring MVC 6, Spring Security, MyBatis
  • DB: Oracle Autonomous DB(OCI)
  • ์ €์žฅ์†Œ: AWS S3
  • ์™ธ๋ถ€: Kakao Map, Kakao OAuth2
  • ๋ฐฐํฌ: OCI Compute(Tomcat, HTTPS)

4) ๊ธฐ์ˆ  ์Šคํƒ

  • Language/Build: Java 17, Maven, WAR
  • Web: Spring Web MVC 6.0.23, JSP, JSTL, Servlet 6.0
  • Security: Spring Security 6.0.5 + OAuth2 Client
  • DB/Access: Oracle(OCI), ojdbc8 21.11, MyBatis 3.5.12, DBCP2
  • JSON/Log: Jackson 2.14, Logback 1.5
  • ํŠนํ™”: ZXing(QR), AWS SDK v2 S3, Lombok
  • ํ˜‘์—…/๋ฐฐํฌ: GitHub, Figma, Jira, OCI Compute(Linux, Tomcat)

5) ํŒ€์›

๊ตฌํฌ์› ๊น€๋ฏผ์„œ(ํŒ€์žฅ) ์ตœ์˜จ์œ  ์ตœ์ด์„œ
HeHelee mimmimkim onu96 chtoqur
ํšŒ์›๊ด€๋ฆฌ
์ ๊ฒ€์ž ๊ด€๋ฆฌ
OCI HTTPS ๋ฐฐํฌ
์„ค๋น„ยทQR ๊ด€๋ฆฌ
์ง€๋„
AWS S3 ์—ฐ๋™
๋ชจ๋ฐ”์ผ ์ ๊ฒ€ยท๋ฏผ์›
๋ฏผ์› ๊ด€๋ฆฌ
๋Œ€์‹œ๋ณด๋“œ
์ ๊ฒ€ ํ…œํ”Œ๋ฆฟ
์ ๊ฒ€ ๊ฒฐ๊ณผ

6) ์„ฑ๊ณผ ์š”์•ฝ

  • ์ ๊ฒ€ยท๋ฏผ์› ํ†ตํ•ฉ ์›น์•ฑ ์™„์„ฑ. ํ˜„์žฅ QR โ†’ ์ฆ‰์‹œ ์ž…๋ ฅ โ†’ ๋Œ€์‹œ๋ณด๋“œ ์ง‘๊ณ„
  • OCI HTTPS ๋ฐฐํฌ ์•ˆ์ •ํ™”. ์™ธ๋ถ€ API ์—ฐ๋™ ๋ณด์•ˆ ํ™•์ธ
  • ์ง€๋„ ๊ธฐ๋ฐ˜ ์šด์˜๊ณผ ์ตœ๊ทผ 10์ผ ํ†ต๊ณ„๋กœ ๊ด€๋ฆฌ ํšจ์œจ ํ–ฅ์ƒ

์‚ฌ์ „ ์š”๊ตฌ์‚ฌํ•ญ (Prerequisites)

  • ์šด์˜์ฒด์ œ: Linux, macOS, Windows
  • Java: JDK 17 (LTS)
  • ๋นŒ๋“œ ๋„๊ตฌ: Maven (์ตœ์†Œ 3.8.x ์ด์ƒ)
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„: Apache Tomcat
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค: Oracle Database
  • ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž / ์—ฐ๊ฒฐ ๋„๊ตฌ
    • Git
    • Oracle JDBC Driver (ojdbc8)
    • Oracle SQL Developer

์„ค์น˜ (Installation)

  1. ์ €์žฅ์†Œ ํด๋ก 

    # GitHub ์ €์žฅ์†Œ๋ฅผ ํด๋ก ํ•˜๊ณ  ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™
    git clone https://github.com/sysone-3/qure.git
    cd qure
  2. ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ • ์•„๋ž˜ ์˜ˆ์‹œ ํŒŒ์ผ์„ ์ฐธ๊ณ ํ•˜์—ฌ src/main/resources ๊ฒฝ๋กœ์— ์„ค์ • ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜์„ธ์š”.
    ์‹ค์ œ ํ‚ค ๊ฐ’์€ ๋ณด์•ˆ์ƒ ์ปค๋ฐ‹ํ•˜์ง€ ๋ง๊ณ , .gitignore์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

    1) application-db.properties

    • Oracle DB ์—ฐ๊ฒฐ ์ •๋ณด

    • AWS S3 ๋ฒ„ํ‚ท ์ •๋ณด

    • ์„œ๋น„์Šค ๋„๋ฉ”์ธ ์„ค์ •

      db.url=jdbc:oracle:thin:@<DB_SERVICE_NAME>?TNS_ADMIN=<WALLET_PATH>
      db.user=<DB_USERNAME>
      db.pass=<DB_PASSWORD>
      db.driver=oracle.jdbc.OracleDriver
      
      aws.region=ap-northeast-2
      s3.bucket=<S3_BUCKET_NAME>
      aws.accessKeyId=<AWS_ACCESS_KEY>
      aws.secretAccessKey=<AWS_SECRET_KEY>
      
      app.public-domain=https://<DOMAIN_OR_IP>/qure

    2) application-login.properties

     ```properties
     kakao.client-id=<KAKAO_CLIENT_ID>
     kakao.client-secret=<KAKAO_CLIENT_SECRET>
     ```
    

    3) application-map.properties

     ```properties
     kakao.api.key=<KAKAO_API_KEY>
     kakao.app.key=<KAKAO_APP_KEY>
     ```
    
  3. ์˜์กด์„ฑ ์„ค์น˜

    # Maven์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜
    mvn clean install
  4. ๋นŒ๋“œ ๋ฐ ํŒจํ‚ค์ง•

    # Maven์œผ๋กœ WAR ํŒŒ์ผ ๋นŒ๋“œ
    mvn package
    # ์ƒ์„ฑ๋œ WAR ํŒŒ์ผ์€ /target ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅ
  5. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„ ๋ฐฐํฌ

    • Apache Tomcat ์„œ๋ฒ„์— WAR ํŒŒ์ผ์„ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.
    • ์„œ๋ฒ„ ์‹คํ–‰ ํ›„ http://localhost:8080 ๋˜๋Š” ์„ค์ •๋œ ๋„๋ฉ”์ธ(https://qure.site)์œผ๋กœ ์ ‘์†ํ•ฉ๋‹ˆ๋‹ค.
    • ์šด์˜ ํ™˜๊ฒฝ์—์„œ๋Š” Oracle Cloud Infrastructure(OCI) Compute Instance์— ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.
  6. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ดˆ๊ธฐํ™”

    • Oracle Autonomous Database๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
    • ์ดˆ๊ธฐํ™” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
      TODO: ์‹ค์ œ ์ดˆ๊ธฐ ์Šคํ‚ค๋งˆ ํŒŒ์ผ ๊ฒฝ๋กœ/์ด๋ฆ„ ๊ธฐ์ž… ํ•„์š”
  7. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰

    • Tomcat์ด ์ •์ƒ์ ์œผ๋กœ ๊ธฐ๋™๋˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์ ‘๊ทผ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค:
      • ๊ด€๋ฆฌ์ž ๋Œ€์‹œ๋ณด๋“œ: ์›น ๋ธŒ๋ผ์šฐ์ €(๋ฐ์Šคํฌํ†ฑ) โ†’ https://qure.site
      • ์ ๊ฒ€์ž ํ™”๋ฉด: QR ์ฝ”๋“œ ์Šค์บ” ํ›„ ๋ชจ๋ฐ”์ผ ๋ธŒ๋ผ์šฐ์ €
      • ๋ฏผ์›์ธ ํ™”๋ฉด: QR ์ฝ”๋“œ ์Šค์บ” ํ›„ ๋ชจ๋ฐ”์ผ ๋ธŒ๋ผ์šฐ์ €

Pinned Loading

  1. qure qure Public

    QURE-QR ์‹œ์„ค ๊ด€๋ฆฌ ์„œ๋น„์Šค

    Java 1

Repositories

Showing 2 of 2 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loadingโ€ฆ

Most used topics

Loadingโ€ฆ