인프런 커뮤니티 질문&답변

햇병아리님의 프로필 이미지
햇병아리

작성한 질문수

AWS(Amazon Web Service) 입문자를 위한 강의

[1-1] 환영합니다

IOT 관련 데이터 저장 질문드립니다.

작성

·

181

0

출저: 

선생님 안녕하세요. 이제 막 개발에 입문한 주니어 개발자 입니다.(주말에 선생님 강의 열심히 듣고 있네요. ㅎ)

위의 Q&A 과정 중에서 선생님이,

보통 IoT로 데이터를 받아올때 S3나 다이나모디비에 넣어두는 경우가 일반적입니다. 거기서 프로세싱을 거치기 위해 Lambda를 사용하는 경우도 있구요. 프로세싱된 데이터를 다시 다이나모디비에 넣을 수도 있고 RDS를 사용하여 다른 DB로 데이터를 보내기도 합니다. 

여기서 IOT로 데이터를 받을때 왜 다이나모디비에 데이터를 넣고 프로세싱 하는지 궁금합니다.

프로세싱이 데이터를 시스템에 필요한 형태로 가공 처리를 하는 의미인것 같은데(프로세싱의 의미가 다르다면 말씀해 주세요...)

굳이 가공되지 않은 데이터를 데이터베이스에 1차적으로 저장하는지 궁금합니다.

혹시, 데이터가 IOT-클라우드 통신간 유실되는 방지하는 용도 일까요.?

답변 부탁 드립니다.!!!!

 

 

답변 1

1

Sungmin Kim님의 프로필 이미지
Sungmin Kim
지식공유자

안녕하세요. 

IoT에서 받는 데이터는 일반적으로 가공되지 않은 로우데이터(raw data)라고 불립니다. 일반적으로 이런 로우데이터를 어딘가에 1차적으로 보관을 하게 되는데요. S3 혹은 다이나모디비가 사용됩니다. 다이나모디비에는 스트리밍 데이터를 읽어오는 기능이 있는데요. 이는 RedShift, RDS에는 적합하지 않습니다. IoT에서는 실시간으로 데이터를 전송하는 경우도 있잖아요? 그럴때 다이나모디비를 사용한다는 것의 저의 요점이었습니다. 

다이나모디비를 사용한다면 주로 로우데이터를 보관하는 테이블( A), 가공된 데이터를 보관하는 테이블(B) 이런 방식으로 운용된답니다. 부서마다 가공되는 방식이 다르다면 B, C, D 여러개가 필요하겠죠?

로우데이터를 어딘가에 보관하는 것은 중요합니다. 예를들어 프로세싱 과정에서 버그가 발견되었다고 해요. 이 버그를 고치고 다시 프로세싱을 돌려야 하는데, 이미 보관되어진 로우데이터를 통해서 파이프라인을 다시 돌리기만 하면 됩니다. 로우데이터를 다시 전송받을 필요가 없다는 뜻이죠. 

도움이 되었으면 좋겠습니다^^

햇병아리님의 프로필 이미지
햇병아리
질문자

상세한 답글 감사합니다.

가공하기전에 로우데이터를 저장하는 행위의 이점은 깨닫게 되었습니다.

 

추가적으로 "프로세싱과정에서 버그가 발견된다." 라는 부분의 구체적 예시를 하나 제시

시 해 주실 수 있으실까요.?

프로세싱중 버그 라는 부분이 도통 감이 안잡혀서요...

질문이 너무 많아서 죄송해요..

Sungmin Kim님의 프로필 이미지
Sungmin Kim
지식공유자

"프로세싱과정에서 버그가 발견된다."

프로세싱은 데이터를 깨끗하게 청소한다 생각할 수 있지만 데이터변환(Transformation) 역시 프로세싱 과정으로 포함시킬 수 있습니다. 예를 하나 들어볼께요. 

 

로우데이터

id, is_discount' => ('abc', True)

id, is_discount' => ('def', False)

id, is_discount' => ('fgh', null)

 

이렇게 3개의 로우데이터가 들어왔다고 가정해볼께요. id는 물품의 고유 아이디, is_discount는 이 물품이 현재 할인중인지 아닌지에 대한 boolean값이 들어있어요. 우리가 저  null을 False로 바꿔버리는 로직이 있다고 생각해볼께요. 그럼 우리가 원하는 결과는 

 

id, is_discount' => ('abc', True)

id, is_discount' => ('def', False)

id, is_discount' => ('fgh', False)

 

이건데 로직에서 버그때문에 다음처럼 데이터가 삭제되버렸어요 ㅠㅠ

id, is_discount' => ('abc', True)

id, is_discount' => ('def', False)

 

여기서 버그를 고친 후 파이프라인을 다시 돌려야 하는데 다행이도 로우데이터는 어딘가에 잘 보관되어 있기 때문에 로우데이터에서 고친 로직을 다시 적용시켜 원하는 결과를 얻을 수 있죠.

 

도움이 되었으면 좋겠습니다 ^^ 또 궁금한 점 있으면 알려주세요.

 

햇병아리님의 프로필 이미지
햇병아리
질문자

선생님, 추가 질문드립니다.

영상정보나, 이미지 정보도 다이나모 디비에 저장하기도 하나요.?영상정보, 이미지 처럼 데이터 크기가 큰 경우는 어떻게 처리하시는지 궁금합니다.

햇병아리님의 프로필 이미지
햇병아리

작성한 질문수

질문하기