My Boundary As Much As I Experienced

직렬화(serialization)와 역직렬화(deserialization) 본문

BackEnd/Node.js

직렬화(serialization)와 역직렬화(deserialization)

Bumang 2024. 8. 7. 02:19

직렬화와 역직렬화는 데이터의 저장 및 전송을 위해 사용되는 중요한 개념이다.

직렬화 (Serialization)

직렬화는 객체나 데이터 구조를 연속적인 바이트 스트림으로 변환하는 과정이랜다..

이렇게 변환된 데이터는 파일에 저장하거나 네트워크를 통해 전송할 수 있다.

직렬화된 데이터는 원본 객체의 상태를 완전히 표현하여, 나중에 이를 역직렬화해서 원본 객체를 복원할 수 있다.

 

예시

  • 파일 저장: 객체를 파일에 저장할 때 직렬화하여 저장하고, 필요할 때 파일을 읽어 역직렬화한다.
  • 네트워크 전송: 객체를 네트워크를 통해 전송할 때 직렬화하여 전송하고, 수신 측에서 역직렬화하여 원본 객체를 복원한다.

쉽게 말해, 가장 많이 쓰는 걸로는 JSON.stringify가 있다. 객체 자료구조를 string데이터로 제단(?)한다.

const user = { name: "Alice", age: 25 };
const serializedUser = JSON.stringify(user); // 직렬화: 객체를 JSON 문자열로 변환
console.log(serializedUser); // {"name":"Alice","age":25}

 

영상이나 이미지를 버퍼로 쪼개서 보내는 것도 직렬화의 한 예시라고 한다.

// JSON 문자열은 UTF-8 바이트 스트림으로 변환될 수 있음
const byteStream = Buffer.from(serializedUser, 'utf-8');
console.log(byteStream); // <Buffer 7b 22 6e 61 6d 65 22 3a 22 41 6c 69 63 65 22 2c 22 61 67 65 22 3a 32 35 7d>

 

 

 

역직렬화 (Deserialization)

역직렬화는 직렬화된 바이트 스트림을 다시 원래의 객체나 데이터 구조로 변환하는 과정이다.

이를 통해 저장된 데이터나 전송된 데이터를 원래의 형태로 복원할 수 있다.

 

예시

  • 파일 읽기: 파일에서 읽은 직렬화된 데이터를 역직렬화하여 원본 객체를 복원한다.
  • 네트워크 수신: 네트워크를 통해 수신된 직렬화된 데이터를 역직렬화하여 원본 객체를 복원한다.
const serializedUser = '{"name":"Alice","age":25}';
const user = JSON.parse(serializedUser); // 역직렬화: JSON 문자열을 객체로 변환
console.log(user); // { name: 'Alice', age: 25 }