cleanUrl: /data-intensive/encoding-and-evolution

애플리케이션은 시간이 지나면서 점점 변한다. 이 변화에 DB의 변화도 포함되고 column, field 가 추가되거나 삭제되며, data type이 변경되기도 한다.

이러한 DB 관점의 변경은 바로바로 적용된다. 하지만, application의 코드는 대체로 바로 적용되지 않는다.

application code 가 바로 적용되지 않는 이유

이러한 이슈에도 불구하고 변경된 데이터에 시스템이 원활하게 실행되려면 양방향으로 호환성을 유지해야 한다.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/05d082df-0667-44b0-827c-4ce730d314ef/B6563730-0E11-4C07-93D1-07D90D413016.jpeg

데이터 부호화 형식 - Formats for encoding Data

  1. 프로그램은 보통 최소 두가지 형태로 표현된 데이터를 사용해 동작한다.
  2. 파일에 쓰거나 네트워크로 전송할때 json 과 같은 타입으로 encoding (부호화) 해야한다.

서로 다른 두 타입을 메모리에서 byte로 변경하는 것을 부호화(encoding, serialization or marshalling)이라 하고, 반대를 decoding(parsing, deserialization, unmarshalling) 이라 한다.

<aside> 💡 직렬화 라는 단어가 더 직관적일지라도 transaction 맥락에서도 사용되기 때문에 단어의 중복을 피하기 위해 여기서 사용하지 않는다.

</aside>

언어별 형식 Language-Specific Formats

언어에서 인코딩을 위한 기능이 제공된다. java.io.Serializable

쉽게 인메모리 객체를 저장하고 복원하지만, 심각한 문제점이 많다.