직렬화, 역직렬화

henry·2024년 10월 16일

1. 직렬화란?

직렬화(Serialization)란 컴퓨터가 처리할 수 있는 객체나 데이터 구조를
하나의 연속적인 바이트(byte)나 문자열로 변환하는 과정을 말합니다.
쉽게 말해, 데이터를 '연속적인 형태'로 바꾸는 것이라고 할 수 있습니다.

🧳 직렬화의 예시 - 이사

이사를 간다고 가정하겠습니다.
집에 있는 옷, 책, 가구 등 물건들을 이사 트럭에 담기 위해 박스에 포장을 해야 합니다.

이 때, 박스에 담는 과정이 직렬화와 같습니다.
옷과 가구를 각각 포장하여 트럭에 실으면 이 물건들이 안전하게 다른 곳으로 이동할 수 있습니다.



2. 직렬화 작업이 필요한 이유

컴퓨터 프로그램에서 사용되는 객체나 데이터 구조는 다양한 정보(숫자, 문자열, 배열, 객체 등)를 포함하고 있습니다.
하지만, 이를 네트워크를 통해 전송하거나 파일로 저장하려면 특정한 형식(연속적인 데이터, 즉 바이트나 문자열)으로 바꿔야 합니다.
그 이유는 파일이나 네트워크가 객체 자체를 이해하지 못하고, 오로지 바이트문자열 형태의 데이터를 이해하기 때문입니다.

예시: JSON 직렬화

JavaScript에서 흔히 사용되는 데이터 형식인 JSON도 일종의 직렬화 방식입니다.

const user = {
  name: "vedivero",
  age: 30,
  isAdmin: false
};

이 객체를 서버로 보내기 위해서는 이를 문자열로 변환해야 합니다.
이때 JSON.stringify() 메서드를 사용하여 객체를 JSON 형식으로 직렬화할 수 있습니다.

const serializedData = JSON.stringify(user);
console.log(serializedData);
// 출력: {"name":"vedivero","age":30,"isAdmin":false}

이처럼 JSON.stringify()는 객체를 문자열로 변환하여 네트워크를 통해 전송할 수 있도록 준비하는 작업을 합니다.



3. 역직렬화란?

역직렬화(Deserialization)는 직렬화된 데이터를 다시 원래의 형태로 복원하는 과정입니다.
즉, 연속적인 바이트나 문자열로 변환된 데이터를 다시 객체나 데이터 구조로 되돌리는 것을 말합니다.

서버에서 데이터를 문자열 형식(예: JSON)으로 보내주면 이를 다시 프로그램에서 이해할 수 있는 객체로 변환하는 것이 역직렬화입니다.

const parsedData = JSON.parse(serializedData);
console.log(parsedData);
// 출력: { name: 'vedivero', age: 30, isAdmin: false }

역직렬화를 통해 JSON 문자열이 원래의 객체 형태로 복원됩니다.
이제 프로그램 내에서 이 데이터를 사용할 수 있게 됩니다.

🎁 역직렬화의 예시 - 이사 후 짐 풀기

이사한 집에서 포장된 박스를 풀고 물건들을 원래 형태로 정리하는 과정입니다.
옷은 옷장에 넣고, 책은 책장에 꽂는 것처럼 포장된 데이터(박스)를 풀어 원래의 형태로 복원하는 것이 역직렬화입니다.



4. 활용

데이터를 주고받거나 파일에 데이터를 저장하고 불러오는 다양한 상황에서 자주 사용됩니다.
특히 웹 개발에서, 클라이언트와 서버가 서로 데이터를 주고받을 때 JSON 형식을 많이 사용합니다.
이때 Axios와 같은 HTTP 클라이언트 라이브러리는 이러한 직렬화와 역직렬화 과정을 자동으로 처리해주기 때문에 개발자는 훨씬 간편하게 통신 작업을 할 수 있습니다.

0개의 댓글