Serialization(직렬화) & Deserialization(역직렬화)

2022. 9. 26. 01:06android

 

Serialization 직렬화는 무엇인가요??

나무 위키 => 직렬화(直列化) 또는 시리얼라이제이션(serialization)은 컴퓨터 과학의 데이터 스토리지 문맥에서 데이터 구조 오브젝트 상태를 동일하거나 다른 컴퓨터 환경에 저장(이를테면 파일이나 메모리 버퍼에서, 또는 네트워크 연결 링크 간 전송)하고 나중에 재구성할 수 있는 포맷으로 변환하는 과정이다. [1] 

 

 

직렬화 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전.

ko.wikipedia.org

 

다양한 블로그, 사이트에서 Serialization에 대한 글을 보면 대부분 이와 같거나 비슷한 의미로 직렬화에 대한 정의를 내리고 있는 걸 찾아볼 수 있습니다.

 

종합해서 생각해 봤을 때 Serialization은 데이터를 가공하는 것이라고 생각합니다.

 

중요한 것은 서로 다르기 때문에 가공하는 것 아닐까요?

 

이처럼 직렬화는 데이터를 서로 같거나 다른 환경에서 저장, 전달, 통신하기 위해 각각의 환경에 맞게 값이 유효한 공통의 속성으로 변경하는 것입니다.

 

왜 Serialization(직렬화)을 하나요??

왜 직렬화를 할까요?? 

통신하기 위해 데이터의 가공을 위해 사용한다고 하지만 왜 데이터를 가공해서 보낼까요??

왜냐하면 데이터를 유형의 데이터로 변경해서 보내줘야 하기 때문이에요.

유형의 데이터란 데이터 실제 값을 가지고 있는 데이터라고 생각하면 됩니다.

 

데이터가 그럼 실제 값을 가지고 있지 다른 값이 있겠어? 라고 물으시면 네 있습니다!

데이터는 값을 가지고 있는 데이터가 있고 주소를 가지고 있는 데이터 두 개로 나뉠 수 있습니다.

 

여기서 주소란 메모리의 주소를 말합니다. 어디에 저장되어있는지 메모리의 주소로 표현된 데이터를 보내면 다른 컴퓨터는 그게 어디야? 하면서 알 수 없습니다.

그래서 값이 유효한 실제 "데이터 값"이 들어있는 데이터를 보내야만 상대방이 데이터를 사용할 수 있습니다.

 

그럼 어떻게 Serialization(직렬화)을 하나요??

Serialization은 상대가 데이터를 받기 좋게 가공하는 것입니다.

그래서 Serialization 은 데이터를 특정한 포맷에 맞게 변형시켜 보냅니다.

 

포맷에는 대표적으로 유명한 JSON,  XML, CSV, 바이트 스트림 등의 포맷이 있습니다.

 

바이트 스트림이란 8비트로 이루어진 1byte, 이러한 일련의 bytes들이 연속적으로 모여 만든 흐름이며, 순서라고 할 수 있습니다.

 

Serialization 한 데이터는 어떻게 받나요??

직렬화된 데이터를 역직렬화를 통해 사용하는 프로그램 or 애플리케이션에 맞게 바꿀 수 있습니다.

이 과정에서 역직렬화는 데이터의 포맷에 맞게 변형시킨 후에 실제 프로그램에서 사용할 수 있는 데이터로 변형하여 사용하게 됩니다.

 

이상으로 직렬화와 역직렬화의 정의와 이유 등 간단하게 알아보았습니다. 읽어주셔서 감사합니다.