Serialization : 오브젝트나 연결된 오브젝트의 묶음(오브젝트 그래프)을 byte stream으로 변환하는 과정
복잡한 데이터를 일렬로 세우기 때문에 직렬화라고 부른다.
역직렬화 시키는 과정도 포함해서 의미한다.
직렬화를 구현할 때는 생각보다 고려해야 할 점이 굉장히 많다.
여러가지 상황을 감안해서 일관성 있게 동작하는 표준을 기획하고 구현 해야 하기 때문이다.
데이터 레이아웃 : 오브젝트가 소유한 다양한 데이터를 변환할 것인가
이식성 : 서로 다른 시스템에 전송해도 이식 될 수 있는가
버전 관리 : 새로운 기능이 추가 될 때 어떻게 확장하고 처리할 것인가
성능 : 네트워크 비용을 줄이기 위해 어떤 데이터 형식을 사용할 것 인가
회전 정보를 보낼 시, 4개의 float값 16byte를 전부 사용할 필요는 없다 !
→ 양자화 (Quantiaztion) : 정수로 값을 보낸 뒤, 받는 측에서 부동 소수점 값으로 복원
보안 : 데이터를 어떻게 안전하게 보호할 것인가
에러 처리 : 전송 과정에서 문제가 발생할 경우 어떻게 인식하고 처리할 것인가