[개념 콕] 직렬화와 역직렬화

개발에 꼭 필요한 핵심 개념만 콕 집어 드립니다.
Jul 01, 2024
[개념 콕] 직렬화와 역직렬화
✍🏼
개발을 시작하시는 여러분, 정보가 너무 많고 배워야 할 것도 산더미라 어디서부터 시작해야 할지 막막하신가요? 내일배움캠프 수료생들이 4개월 동안 배운 엄선된 핵심 개념을 직접 정리해서 알려 드립니다. 공부하다 막히거나 헷갈리는 개념이 있다면 개념 콕으로 정리해보세요.
 
개발을 하면서 정말 다양하고 새로운 용어들을 매일 접하게 됩니다. 물론 해당 용어들을 잘 이해하고 넘어가는 경우도 많지만, 생소하고 어려워서 한번에 이해가 되지 않는 경우도 제법 많을텐데요. 아마 그러한 대표적인 예가 직렬화, 역직렬화가 아닐까요? 직렬화와 역직렬화는 왜 사용하는 것이고, 어떻게 동작하는 것일까요?
 

2진수(Binary)

디스크에 데이터가 저장되고, 우리가 네트워크를 통해 데이터를 전송할 때 과연 어떤 일이 일어나는 걸까요? 갑자기 무슨 뜬금없는 소리인가 싶겠지만, 데이터가 어떻게 다뤄지는지 알고 나면 직렬화에 대해 이해하는 게 한결 수월해집니다.
컴퓨터나 개발에 대해 잘 모르는 사람도 컴퓨터가 0과 1을 사용해 작동한다는 사실을 알고 있습니다. 컴퓨터는 2진수를 사용해 데이터를 저장하고, 보내는 등의 여러 작업을 수행한다는 의미인데요. 예를 들어 우리가 A라는 문자를 저장하거나, 전송할 경우 해당 문자를 ASCII 코드로 변환해 65라는 숫자로 만듭니다. 이를 2진수로 변환하면 0100 0001이라는 값이 되는데, 컴퓨터는 이 2진수 값을 디스크에 저장하거나, 네트워크를 통해 다른 컴퓨터로 전송하는 데 사용하는 것입니다.
 

객체(Object)

그렇다면 단순히 값만이 아닌 한 가지 데이터의 여러 가지 속성을 가지고 있는 객체는 어떻게 2진수로 저장할 수 있을까요? 우선 일반적으로 이러한 객체를 아무런 과정 없이 메모리에 저장하는 것은 불가능합니다. 객체의 각 속성값들은 메모리의 여러 곳에 나뉘어 저장되고, 프로그램을 재시작 하게 되면 속성값들의 주소가 바뀌기 때문입니다. 즉, 해당 객체의 속성값들이 어디에 저장되어 있는지 알 방법이 없다는 것이죠. 이러한 복잡한 형태의 데이터를 저장하기 위해 등장한 것이 바로 직렬화(Serialization)인 것입니다.
 

직렬화(Serialization)

그렇다면 직렬화는 어떤 방식으로 작동되어 객체를 2진수로 변환하게 되는 것일까요? 직렬화 과정은 크게 3단계로 구분할 수 있습니다.
  • 1단계. 객체의 각 속성들의 값을 기록합니다.
  • 2단계. 속성들의 타입을 함께 저장합니다. (Int, Boolean, String 등의 데이터 타입)
  • 3단계. 객체 내에서 다른 객체를 참조하고 있다면, 해당 참조 정보들도 저장합니다.
이런 과정을 통해 객체를 바이트 형태로 저장하거나, JSON이나 XML같은 특정 포맷으로 변환합니다.
 

JSON, XML

이제 직렬화를 통해 객체가 2진수 형태로 변환되어 활용된다는 것을 알았습니다. 하지만 우리가 직렬화를 하게 되면 보통 JSON이나 XML같은 텍스트 형태의 포맷으로 변형되는 경우가 많은데요. 왜 그럴까요?
앞서 알아본 것처럼 문자는 ASCII나 UTF-8과 같은 규칙을 사용해 2진수로 변환하는 게 가능합니다. 직렬화를 통해 객체가 텍스트 형태의 포맷으로 변경되면, 이 텍스트를 각각 2진수로 변환해 활용하게 되는 것입니다!
 

역직렬화(Deserialization)

역직렬화는 직렬화를 바탕으로 쉽게 이해할 수 있습니다. 역직렬화는 (놀랍게도) 직렬화를 거꾸로 해서 객체로 만들어주면 끝입니다. 전달받았거나 불러온 이진코드를 직렬화의 과정을 역으로 실행하면 되는데요. 값, 값의 타입, 참조 정보 등을 불러와 지정한 객체의 형태로 변경해 주면 역직렬화는 끝입니다.
언어나 프레임 워크, 라이브러리에 따라 직렬화와 역직렬화 방법은 조금씩 차이가 있지만, 결국 이런 원리를 통해 작동합니다. 어려워하지 말고 직렬화와 역직렬화에 도전해보세요!
 
 

내일배움캠프는 개발에 필요한 핵심만 배웁니다

지금까지 꼭 필요한 개발 지식에 대해 알아보았습니다. 내일배움캠프에서는 전문가들이 선별한 핵심 개발 지식으로 개발 공부도, 취업도 보다 효율적으로 할 수 있는데요. 국내 유수의 IT기업 출신 튜터님들과 실습 위주의 독보적인 커리큘럼으로 개발자 취업을 체계적으로 준비해보세요. 내일배움캠프 4개월, 여러분 인생의 가장 큰 터닝 포인트입니다.
 
 
 
CREDIT
글 | 배영수 내일배움캠프 수료생 편집 | 정효재 팀스파르타 에디터
Share article
Subscribe to our newsletter
RSSPowered by inblog