Base64 인코딩

ToastEggsToast·2021년 8월 15일
0

TIL

목록 보기
15/15

이미지 업로드

정신없이 프로젝트에 뛰어들어 이것저것 하다보니 벌써 프로젝트가 막바지를 향하고 있었다.
정확히 말하면 막바지는 아니고, 1차 마무리라고 해야하지 않을까.
주요 기능 구현들이 마무리가 되어 가고 있는 상황에서 큰 관문 몇 개만을 앞에 남겨두고 있는데, 그 중에 바로 하나가 이미지 업로드와 관련된 것이었다.

이미지 업로드. 생각해보니 이미지를 업로드 한 기억이 많지 않았다.
과거 국비학원에서 웹퍼블리싱을 배우던 시절, 당시 앱 수업을 맡아 진행하시던 선생님의 도움으로 api서버를 받아 이미지를 업로드 한 경험은 있는데, 그 때에는 어떻게 저장을 한다던가 이러한 설명이 전혀 없었기 때문에..
막연하게 이미지를 어떻게 저장하고, 어떤 원리로 저장하고, 저장하는데에 어떤 방식이 있는가에 대해서는 제대로 알고있지 못했다.

이번 프로젝트에서 이미지 업로드 하는 영역이 꽤 몇 군데가 되는데, 스스로는 자각하지 못 하고 있었으나 현재까지 이미지를 업로드 하는 방식은 Base64를 기반으로 이미지 업로드를 진행하고 있었다 라는 설명을 들었다.

그리고 그걸 들은 나는 당연히

딱 이 상태였다. Base64요..? 그게 뭔데요..?
진짜 그 때의 내 표정을 생각해보면 아직도 좀 웃기다. 굉장한 동공지진을 일으켰으리라 생각한다.
그도 그럴게, 진짜 나는.. 사실 내가 한 것만 알지 그 외의 기본적인 CS지식이 거의 전무하다고 봐도 무관할테니까..
이 날 느낀 점이 하나 있었다. 공부하자.

그래서 Base64가 뭔데?

Base64를 직역하면 64진법이 된다. (이 말 진짜 어떤 자료를 찾아도 다 시작엔 이 말이더라. 그래서 나도 써봤다.)
64진법을 기반으로 만들어진 테이블을 기반으로 ASCII 영역의 문자들로 바꾸는 인코딩 방식을 의미합니다.

인코딩: 인코딩이란 사람이 인지할 수 있는 형태의 데이터를 약속된 규칙에 의해 컴퓨터가 사용하는 0과 1로 변환하는 과정을 통틀어 일컫습니다. 샘플링이라고도 하며, 코드화, 암호화 라고 이해하면 될 것 같습니다. 인코딩의 반댓말로는 디코딩이 있습니다.

왜 Base64를 기반으로 인코딩을 할까?

Base64를 이용해 인코딩을 진행하게 되면 기존 데이터보다 30%이상 길어지게 되며, 성능에도 영향을 끼칠 수 있습니다. 그럼에도 불구하고 Base64를 이용해 인코딩을 진행하는 이유는 Binary 데이터를 텍스트 기반 규격으로 다룰 수 있기 때문입니다.
JSON과 같은 문자열 기반 데이터 안에 이미지 파일 등을 Web에서 필요로 하는 경우, Base64를 이용하면 UTF-8과 호환 가능한 문자열을 얻을 수 있게됩니다. 또한 통신 과정에서 바이너리 데이터의 손실을 막을 수 있고, 포함된 Binary데이터가 시스템 독립적으로 동일하게 전송 또는 저장되는 것을 보장할 수 있게 됩니다.

지금 나의 프로젝트에서 Base64 인코딩 데이터를 직접 저장하지 않는 이유는 무엇일까

일단 위에서 말했던것처럼 Base64를 이용해 인코딩을 진행하게 되면 데이터가 기존보다 30% 이상 길어지게 되며, 그 만큼 차지하는 용량도 커지게 되어 프로젝트와 알맞지 않을 수 있다는 생각이 들었습니다.

api로 이미지를 통신해, JSON형식의 데이터를 받아 클라우드에 올린 이미지 url을 받아 데이터베이스에 저장하는 방식으로 진행하기로 했는데, 해당 방법에 대해서는 조금 더 공부를 하고 실습을 진행한 후 작성해보고싶습니다.

AWS의 늪.. 처음 회사에 들어갔을 때부터 도커와 함께 저를 괴롭히던(ㅠㅠ) 친구들 중 하나인데, 이번만큼은 포기하지 않고 진행해보고싶습니다:)
Base64가 대체 무엇인가 했는데 찾아보니 결국 인코딩 방식이었고, 데이터를 가공하는 방식이었다! 라는 결론을 내릴 수 있었습니다.

profile
개발하는 반숙계란 / 하고싶은 공부를 합니다. 목적은 흥미입니다.

0개의 댓글