[프로젝트] 더미 데이터를 만들어보자

Godtaek·2024년 2월 10일
0

project

목록 보기
1/4

1. 들어가기 앞서

부트캠프를 하며 주문 서비스 프로젝트를 개발하고 있다.

개발을 배우는 입장에서 주문 서비스를 사용할 땐 몰랐는데 개발할 때보니 생각할 것이 많았고, 많은 장애가 예상되었다.

재고 동시성 관리, 많은 트래픽이 온다면 어떻게 처리할 건지, 주문 서비스 싸이클 중 실패하면 트랜잭션은 어떻게 할건지....

예상되는 실패들과 고민을 모아 남겨보기로 했다.

2. 더미 데이터 만들기

뜬금없이 왠 더미 데이터???

부트캠프에서 테스트 시나리오 중 하나로 API 10000건 호출을 줬다. 이것을 서로 다른 userId로 해야 한다. 주문 API 호출 10000건이야 코드로 한다고 해도, user 10000명의 Data가 필요했다.

데이터를 한 땀 한 땀 만드는 것은 비효율적이다. 아니 10000건쯤 되면 거의 미친 짓이다. 역시 코드로 만들면 되지만, 완전 랜덤 데이터가 들어가는 정말 더미 데이터가 될 거기 때문에 툴을 찾아봤다.

그 결과 Mockaroo를 찾았다.

3. Mockaroo

한 번의 1000개의 row insert문을 만들어주는 툴. 다만 횟수 제한은 없는

Mockaroo는 데이터 형식을 맞춰, 이에 해당하는 랜덤 데이터를 만들어주는 툴이다.

Field를 정의하고 Type을 지정할 수 있다. dummy image url이나, 자동차 이름, 음식 이름 등 여러 Type을 지정해 보다 쓸모있는 데이터를 제공해 준다.

시그마를 클릭하면 Ruby로 간단하게 규칙을 정할 수 있는 formula를 작성할 수 있다.

밑의 Generate Data를 통해 출력이 가능하며, Preview에서 볼 수 있다.

_preview를 통해 보이듯, 생각보다 꽤 그럴듯한 데이터가 채워진다. 물론 저 password로는 로그인이 안 되겠지만

데이터 출력 형식 또한 Json, xml, Sql 등 다양한 형식을 제공한다.

문제는 id다. Jpa를 사용하면서 Id를 key값으로 둬서 중복되면 안 된다. Row Number Type은 자동으로 숫자가 늘어나지만, 1000개 이상이 필요한 경우 formula로 정해주거나 유료 plan을 사용해야 한다.

variable = this + n*1000

시작지점을 n에 넣으면 key가 자동으로 늘어난다. (Row Number에서 첫 this는 1이다. 그리고 this는 이전 필드를 나타내는 것 같다. 그러니, 1001부터 하고 싶다면, this + 1000을 하여 1001부터 시작한다.)

4. DB에 적용

MySQL을 사용했다.

SQL 파일로 Generate Data를 한 뒤, SQL 터미널을 열어 붙여넣으면 된다.

mysql -uroot -p; 
...
use database_name;
...
insert dummydata;

이 때 패스워드 필드가 고장났다.
"\" 때문에 제대로 파싱이 되지 않는 문제가 존재했다.
이것을 ide나 에디터를 통해 다른 문자로 바꿔주면 된다.

Intellij를 쓴다면 더 편하게 넣을 수 있다.

SQL 파일을 붙여넣고 왼쪽 위의 Run 버튼을 누른 뒤, 전체 실행을 누르면 된다.

만약 id가 중복되었다면 ignoreAll를 눌러서 중복된 부분을 패스해주자.
다만 이 경우, sql 터미널보다 속도가 느렸다.

profile
성장하는 개발자가 되겠습니다

0개의 댓글