IoT, νκ²½, μ€λΉ, μ¨μ΄λ¬λΈ λ± λ€μν μΌμ λ°μ΄ν°λ₯Ό AWS Kinesis, MQTT λ±μμ μμ§νμ¬ Flinkλ‘ μ€μκ° μ²λ¦¬νκ³ , Kafka λ° S3 λ±μΌλ‘ μ μ₯/μ μ‘νλ λ°μ΄ν° μ€νΈλ¦Ό νμ΄νλΌμΈμ λλ€.
.
βββ src/main/java/com/monitory/data/
β βββ FlinkSourceApplication.java # λ©μΈ μ€ν νμΌ
β βββ config/ # Kafka, MQTT μ€μ λ‘λ
β βββ sinks/ # S3, Kafka λ± Sink κ΄λ ¨ ν΄λμ€
β βββ sources/ # Kinesis, MQTT λ± Source κ΄λ ¨ ν΄λμ€
β βββ transformations/ # λ°μ΄ν° λ³ν/κ°κ³΅ λ‘μ§
β βββ utils/ # μ νΈλ¦¬ν° ν΄λμ€
βββ src/main/resources/
β βββ application.properties # νκ²½λ³ μ€μ νμΌ (gitignore)
β βββ certs/ # μΈμ¦μ ν΄λ (gitignore)
β βββ log4j.properties # λ‘κ·Έ μ€μ
β βββ flink-conf.yaml # Flink μ€μ
βββ build.gradle # Gradle λΉλ μ€ν¬λ¦½νΈ
βββ Dockerfile # Docker μ΄λ―Έμ§ λΉλ νμΌ
βββ Jenkinsfile # Jenkins CI/CD νμ΄νλΌμΈ
βββ ...
- AWS Kinesis, MQTT λ± λ€μν μμ€μμ μ€μκ° λ°μ΄ν° μμ§
- Flink κΈ°λ° μ€μκ° μ€νΈλ¦Ό μ²λ¦¬ λ° μ΄μμΉ/λΌλ²¨λ§ λ³ν
- Kafka ν ν½λ³ λ°μ΄ν° λΆλ₯ λ° μ μ‘
- S3λ‘ μκ°/μ₯λΉλ³ μ§κ³ λ°μ΄ν° μ μ₯
- Prometheus κΈ°λ° λͺ¨λν°λ§ μ§μ
- Java 11 μ΄μ (Amazon Corretto 11 κΆμ₯)
- Gradle 8.x
- AWS μ격μ¦λͺ λ° S3, Kinesis, Kafka, MQTT λΈλ‘컀 μ κ·Ό κΆν νμ
./gradlew build- μ€ν νμΌμ
build/libs/monitory-data-1.0-SNAPSHOT.jarλ‘ μμ±λ©λλ€.
java -jar build/libs/monitory-data-1.0-SNAPSHOT.jarλλ Dockerλ‘ μ€ν:
docker build -t monitory-data .
docker run --env-file .env -p 8081:8081 monitory-datasrc/main/resources/application.propertiesμ Kafka, MQTT, AWS λ± μ°κ²° μ 보λ₯Ό μ€μ ν΄μΌ ν©λλ€.- μΈμ¦μ νμΌμ
src/main/resources/certs/μ μμΉν΄μΌ νλ©°, gitμλ ν¬ν¨λμ§ μμ΅λλ€.
FlinkSourceApplication: Flink μ€νΈλ¦Ό νμ΄νλΌμΈμ λ©μΈ μνΈλ¦¬ν¬μΈνΈKinesisSourceUtil: Kinesis Consumer μμ±KafkaUtil: Kafka Sink μμ± λ° ν ν½ λΆκΈ°S3SinkUtil: S3 Sink μμ±TimeStampAssigner: UTC νμμ€ν¬ν β KST λ³νEnvironmentDangerLevelAssigner: νκ²½ μΌμ μνλ λΌλ²¨λ§FaultyAssigner: μ€λΉ μΌμ μ΄μμΉ νμ§WearableDangerLevelAssigner: μ¨μ΄λ¬λΈ μΌμ μνλ λΌλ²¨λ§
- CI/CD: Jenkins, GitHub Actions, ArgoCD, Slack μ°λ
- λ‘κ·Έ: log4j μ€μ (
log4j.properties) - Flink μ€μ :
flink-conf.yamlμ°Έκ³
λ³Έ νλ‘μ νΈλ Apache 2.0 λΌμ΄μ μ€λ₯Ό λ°λ¦ λλ€.
λ¬Έμ λ° κΈ°μ¬λ Issues λλ PRλ‘