
오후 8시부터 익일 오전 7시 30분까지 총 11시간 30분을 몰입하여 프로덕트에 대해 고민하고 개발하는 경험을 할 수 있었다.
우리는 A라는 특정 인물의 불편함을 파악하고 문제를 해결하기 위해 다음과 같은 페르소나를 정의했다.
커져가는 구독 시장, 다중 구독의 시대
경제적이고 효율적으로 구독 서비스를 사용하기 위해 어떻게 할 수 있을까?
이에 따라 "구독 관리 서비스"를 제작하기로 결정했고, 경쟁 어플인 "왓섭"과의 차별점으로 총 2가지를 제시했다.
- 2-30대가 더 경제적으로 구독 서비스를 이용할 수 있도록 "구독팸" 모집을 도와준다.
- 서비스 이용자가 구독 서비스를 효율적으로 사용하고 있는지 판단을 도와주기 위해 연령대별, 직무별 구독 사용 현황을 알려준다.
나는 ERD 설계를 하면서 끊임없이 프로덕트가 더 나은 방향으로 갈 수 있도록 대화했다.

그리고 팀원들이 바로 데이터를 사용할 수 있도록 하기 위해서 Postgresql에 테이블을 생성하고, 더미 데이터를 삽입했다.

from faker import Faker
from sqlalchemy import create_engine, text
import time
# PostgreSQL 연결
host = '****'
db_name = '****'
db_user = '****'
db_password = '****'
engine = create_engine(f'postgresql://{db_user}:{db_password}@{host}/{db_name}')
conn = engine.connect()
fake = Faker('ko_KR') # locale 정보 설정
Faker.seed() # 초기 seed 설정
insert_query = text('INSERT INTO users (nickname, email, password_hash, birth, age, created_at, updated_at, job_id) VALUES (:nickname, :email, :password_hash, :birth, :age, :created_at, :updated_at, :job_id)')
with conn.begin() as trans:
for i in range(999):
nickname = fake.name()
# 고유한 email 생성 (인덱스와 타임스탬프를 사용자명에 추가)
base_email = fake.email()
email_parts = base_email.split('@')
unique_email = f"{email_parts[0]}_{i}_{int(time.time() * 1000000)}@{email_parts[1]}"
password = fake.password()
birth = fake.date_of_birth(minimum_age=16, maximum_age=65)
created_at = fake.date_time_between(start_date='-1y', end_date='now')
updated_at = fake.date_time_between(start_date='-1y', end_date='now')
job_id = fake.random_int(min=1, max=7)
age = 2025 - int(str(birth)[:4])
conn.execute(insert_query, {'nickname': nickname, 'email': unique_email, 'password_hash': password, 'birth': birth, 'age': age, 'created_at': created_at, 'updated_at': updated_at, 'job_id': job_id})
conn.close()
더미 데이터는 Faker 라이브러리를 사용하여 넣었고, 위 코드는 `users` 테이블에 들어가는 유저 정보를 생성하는 코드이다.
이외에도 구독 서비스, 유저가 어떤 구독 서비스를 사용하고 있는지 등에 대한 더미 데이터를 생성했다.
그리고 연령대별, 직무별 통계를 내기 위해 약 4,000개의 데이터를 생성했다.

그 결과 우리는 담아(Dama)라는 구독 관리 & 커뮤니티 서비스를 제작했고, 사진에 보이는 것과 같은 애플리케이션을 만들었다.
아쉬운 점
ProfitLab 해커톤은 코드가 아닌 비즈니스 실현 가능성을 평가한다.
나는 타서비스에서 이미 제공하고 있는 가계부 형태의 구독 관리 기능을 우리 서비스에서 다시 구현하는 것보다, "구독팸 결성"과 "구독 서비스 통계"에 집중하고 싶었다.
즉, 경제적인 구독 서비스 이용을 도와주는 것에 대한 꼭지점을 개발하고 싶었다.
하지만 나의 의견은 아쉽게도 받아들여지지 않았고, 우리 팀은 구독 관리에 초점을 맞춰 기능 개발을 우선적으로 하게 됐다.
나의 말에 설득력이 없었을까? 개발 공부도 중요하지만, 다른 사람들과 협업할 때 필요한 소프트 스킬도 공부해야겠다!
결과
우리 팀은 아쉽게도 수상하지 못했다.
개인적으로 그 원인은 앞서 말했듯 기능 개발에 초점을 둔 것과 비즈니스 모델을 산정할 때 터무니 없는 광고비 계산이라고 생각한다.
그러나 좋은 사람들과 11시간 30분이라는 긴 시간동안 졸음을 이겨내며 프로덕트를 만들어내겠다는 생각 하나만으로 같이 시간을 보낸 것은 값진 경험이라고 말할 수 있을 거 같다.

