Post

(Seminar)제어할 수 없는 것에 의존하지 않기

글을 작성하게 된 이유

얼마 전 업무를 진행하면서, 우아한테크세미나 에서 들었던 내용중 이동욱님이 이야기 해주신 내용에 매우 공감하는 부분이 있어 정리하면서 추후 이와같은 실수를 방지하기 위해 작성

제어 할 수 없는 것에 의존하지 않기

간략한 내용

이동욱님 께서 제어할 수 없는것에 의존하지 않기 라는 제목으로 발표를 해주셨는데, 발표 내용중 DB의 PK 값으로 예전에는 주민등록 번호를 종종 사용하였는데 이 부분이 법적으로 수집이 불가능해지면서 사용하는 모든 DB 의 PK 값을 변경해야하는 대대적인 작업을 진행한적이 있다고 말씀해주시면서 의존할 수 없는 것(여기서는 주민번호) 에 의존하게 되면 그 부분에 있어 변경이 발생하는 경우 들어가는 리소스가 매우 많아져서 곤란할 수 있다는 내용이 있었다.

공감된 부분

최근 회사에서 여러 사이트를 통합으로 모니터링 하는 사이트를 운영하고 새로운 기능을 추가하는 부분을 업무로 맡았는데, 여기서 여러 사이트를 구분할때 사이트 마다 하나씩 설치되어있는 어떤 장치의 고유 번호를 사용하고 있었다. 근대 여기서 문제가 발생하였는데 바로 이 장치가 각 사이트에 두개 이상이 설치될 수 있다는 부분이였다. 원래는 각 사이트마다 하나씩만 설치되어 운영될 예정이였는데 이 부분이 변경되면서 문제가 발생하게 되었다.

1
url = www.example.com?고유번호=xxx

위 방식으로 각 사이트의 URL 을 구분하고 있었는데, 이게 고유 번호가 두개 이상 들어가면서 고유 번호로 사이트를 구분하는데 문제가 발생하게 된것이다.

게다가 동욱님 사례와 유사하게 이 고유 번호를 가지고 DBPK 를 설정하여 값을 저장하고 꺼내오고 있었는데 식별이 어려워 지면서 모든DB 의 사이트 PK 를 변경해야 하는 문제도 함께 발생하게 되었다.

기존에 사용하던 고유번호의 경우 우리가 제어할 수 있는 번호가 아니라 각 장치의 번호이기도 하면서, 우리가 무조건 하나만 설치하고 사용할수 있는것 도 아니였다. 즉 제어할수 없는 부분이 2개씩이나 있는 번호를 우리는 지금까지 각 사이트의 구분에 사용하고 있었던것이다.

1
url = www.example.com?site_id=xxx

결국 나는 사이트를 구분하는 값을 변경할 수 밖에 없었다. 그래서 각 사이트 마다 우리가 정해준 id 값을 사용하여 구분하도록 변경하였다. 변경 작업이 간단하고 쉽지많은 않았다. 모든 코드의 URL 을 사이트 고유의 id 로 변경을 해야했고, DBPK 를 변경해야하는 작업 까지 함께 진행했기 때문이다.

데이터가 몇개 없더라도 PK 를 변경하는것은 쉽지 않은 작업인데, 실제 운영하는 DBPK 를 변경하는 작업은 정말정말 쉽지 않았고 고려해야할 내용도 매우 많았다.

물론 서비스를 처음 내가 만들것은 아니였지만, 이동욱님의 발표를 듣기 전의 나였더라면 어떤 선택을 했을까? 라는 생각을 해봤다.

앞으로 코드를 작성하고 설계하면서 내가 스스로 제어 할 수 없는 부분에 의존하고 있는 부분은 없는지 좀 더 확인하고 생각하면서 코드를 작성과 설계를 해야겠다는 생각이 들었다.


REFERENCE

This post is licensed under CC BY 4.0 by the author.