직장인에게 익숙함이란 자신감과 여유를 보이는 힘인 동시에 슬럼프와 권태에 빠지는 신호이기도 합니다. 직장 생활은 이 양면성을 저울에 올려 균형을 맞추는 일인데요. 동기 친구들에게 데일리펀딩 IT실 인턴십 프로그램의 경험담을 익히 들은 김준영님과 나현흠님, 박민정님은 ‘익숙한 세계’라는 무기로 개발 프로젝트 초반부터 힘차게 달려 나갔습니다. 세 사람은 인턴십 과제로 시작한 첫 프로젝트가 좋은 평가를 받자, 매일같이 회의실에 모여 의논하며 더욱 의지를 불태웠습니다.
데일리펀딩 블로그 ‘데일리 인사이트’ 리뉴얼 SEO∙AEO 장치는 더하고 데이터 관리는 효율적으로
데일리펀딩이 지난해부터 진행 중인 마이그레이션은 플랫폼에 녹아든 기술을 최신화하고 안정성을 높여 고객 편의와 고객 신뢰를 높이는 프로젝트입니다. 이러한 데일리펀딩의 방향성은 공식 블로그인 ‘데일리 인사이트’에 담겨 있는데요. IT실 인턴십 프로그램에 참여한 김준영님과 나현흠님, 박민정님은 데일리 인사이트를 마이그레이션하면서 그 안에 담긴 이야기가 고객에게 더 잘 닿는 방법도 고민했습니다.
Q. 안녕하세요! 프로젝트 이야기하기 전에, 먼저 여러분 소개를 해 주세요.
• 민정 : 교육 분야에 관심이 많아 대학교 1학년부터 교육 봉사 중앙동아리에서 활동했어요. 전공을 살리면서 아이들을 교육해 줄 수 있는 방향이 무엇일까 고민하던 중 대기업과 협업해서 진행하는 IT 교육 봉사를 알게 됐어요. 그 길로 휴학하고년간교육 봉사에 집중했어요레고로 로봇을 만들거나 스크래치라는 코딩 프로그램으로 블록 코딩을 하면서 중고등학생이에 흥미를 가지도록 도와줬어요
2
IT
.
IT
.
IT 교육 봉사를 계기로 대기업 현장 탐방도 여러 번 가 봤어요. 그때 스마트 가전을 직접 보고, 어떤 방향으로 AI를 활용하는지 들으니 관심이 생기더라고요. 특히 사용자와 상호작용한다는 점이 눈에 확 들어왔어요. 사용자 친화적인 개발은 대학생 때 하는 학문, 연구에서는 경험하기가 힘들었거든요. 복학 후 웹 개발에 뛰어들었던 그 마음이 데일리펀딩 인턴십으로 이어졌네요.
• 현흠 : 처음 개발을 시작한 건 고등학생 때예요. 많은 사람이 제가 만든 서비스를 직접 사용하면 좋겠다는 생각이 들었거든요. 대학교에 와서 본격적으로 앱 개발을 시작했는데요. 부트 캠프를 경험하면서 단순히 기능만 만드는 게 아니라, 사용자와 가장 가까운 곳에서 소통하며 경험을 만들어 가는 개발자가 되고 싶다는 생각이 들었어요. 사용자의 입장에서 고민하고 더 나은 경험을 제공하는 일, 그게 제가 개발을 계속하는 이유예요.
• 준영 : 원래 전공은 생명공학이었는데, 군 복무 후 복학을 앞두고 진로에 대해 진지하게 고민하게 됐어요. 그때 누나의 권유로 프로그래밍을 처음 접했어요. 호기심에 유튜브 강의를 들어봤는데 제 손에서 웹사이트가 만들어진다는 사실이 꽤나 흥미로웠어요. 복학 후 컴퓨터공학과 강의를 수강해 보니 성적도 잘 나오고 적성에도 맞는다는 확신이 들었어요. 그때부터 개발자의 길을 걷게 됐어요.
Q. 인턴십 과제로 ‘데일리 인사이트’ 페이지를 개편했어요. 개편 이유가 궁금해요.
• 민정 : 데일리 인사이트에는 검색창과 페이지 넘버링 기능이 없어서 업로드한 지 두 달만 지나도 사용자가 보기 힘들었어요. 또 5년 전에 만들어진 페이지라 그 안에서 쓰이는 의존성 파일 버전도 너무 오래돼 다운로드받을 때 충돌 문제가 일어났어요. 그리고 기존에는 이미지를 압축하지 않고 내려줘서 용량이 큰 파일은 로딩이 지연되기도 했어요.
지난해부터 데일리펀딩은 플랫폼 마이그레이션 작업을 해 오신 걸로 아는데요. 데일리 인사이트 페이지도 고객이 콘텐츠를 찾기 쉽게 UI를 개선하고, 데이터 관리 효율성도 높여야 한다는 논의가 오갔어요. 여기에 더해 저희는 관리자 페이지도 대폭 리뉴얼했답니다.
Q. 그 과제가 정식 프로젝트로 이어졌어요. 과제 발표 당시 어떤 평가를 받았나요?
• 준영 : 보통은 과제를 수행하고 발표할 때 시간이 촉박해서 로컬에서만 프로젝트가 돌아가게 시연하는 경우가 많아요. 그런데 저희는 이왕이면 실제 블로그처럼 운영해 보자고 의견을 모아 도메인 주소를 구입했어요. 도메인 주소로 접속하면 누구나 블로그를 사용할 수 있게, 최대한 기존 블로그와 유사한 구조로 개발했어요. 그 점을 높이 평가해 주셨어요.
Q. 개발 목표도 더 구체화됐을 것 같아요. 어떤 부분을 개선하려 하셨나요?
• 현흠 : 요즘은 SEO를 넘어 GEO와 AEO까지 고려한 콘텐츠 설계가 중요해요. 그런데 콘텐츠 내용이나 구성만으로는 한계가 있어요. 디스크립션(description)부터 캐노니컬 태그(canonical tag), 슬러그(slug), 요약글(summary), 작성자 정보 같은 메타데이터를 잘 관리하는 게 중요해요. 마침 데일리 인사이트 페이지와 콘텐츠를 관리하는 PR팀에서 이를 직접 커스터마이징하는 기능을 요청해 주셨어요. 해당 기능을 구현하기 위해 SEO와 AEO를 정말 많이 공부했어요.
• 준영 : 기존에는 업로드한 이미지가 서버 로컬에만 저장됐어요. 이런 구조는 서버를 추가로 띄웠을 때 기존 서버의 이미지를 조회할 수 없고, 별도 UI 없이 이미지를 관리해야 한다는 불편함도 있어요. 스케일 아웃을 고려한 확장성 있는 설계가 필요하다고 판단해서, 민정님과 논의 후 NHN Cloud의 오브젝트 스토리지(object storage)에 이미지를 보관하는 방식으로 변경했어요.
블로그 관리자에게 필요한 수십 가지 기능 리스트업 콘텐츠 접근성, 조회수 집계 등 서비스 개선
여럿이 함께 진행하는 만큼 서로 의견 충돌이 발생할 가능성도 있었지만 3명의 대학생 개발자는 개선사항을 리스트로 정리하고 파트를 분배하는 등 협업에 강한 모습을 보여 주었습니다. 아무리 작은 의견이나 내용이더라도 회의실로 달려가 서로 공유하고 논의했습니다. 특히 실 사용자인 PR팀에게 필요한 기능으로 서비스를 구성하는 등 프로젝트 완성도를 높였습니다.
Q. 파트 분배, 의견 조율은 어떤 식으로 진행했나요?
• 현흠 : 저랑 민정님은 프런트엔드, 준영님은 백엔드로 나뉘거든요. 민정님은 관리자 페이지 전체를, 저는 유저 페이지 프런트엔드 개발을 그리고 준영님은 유저 페이지 백엔드와 인프라 부분을 맡았어요.
• 준영 : 프로젝트 초반에 앞으로 저희가 무얼 만들지 회의실에 가서 논의하고 하나하나 다 정리했어요. 어떤 게 필요할지 상상해 보기도, 기존 기능을 참고하기도 하면서요. 물론 PR팀에게 직접 여쭤보고 필요한 기능을 추가하기도 했어요. 그렇게 취합한 내용은 컨플루언스 문서 ‘기능 정의서’라는 제목으로 정리해 두었어요. 중요도나 미결 사항 등 체계적으로 개발 요소를 기록해 두니 우리의 미션을 한눈에 보기 좋았어요.
Q. 개발 과정에서 특히 중점을 둔 게 있다면 그 이유와 함께 구체적으로 설명해 주세요.
• 민정 : LLM이 발달한 만큼 게시물 정보를 저장하는 메타 데이터 필드가 중요해진 것 같아요. 검색에 사용되는 슬롯이라는 필드를 신경 쓰기도 하고, 캐노니컬 URL을 통해 가독성과 접근성을 높이려 많은 시도를 했어요.
• 현흠 : GA4로 조회수를 파악할 순 있지만 반영이 늦어서 지금 당장 이 페이지에 접속한 사람을 파악하긴 어려워요. 그래서 조회수 집계 로직도 구현했는데요. 한 페이지에서 새로고침을 계속 하거나 하나의 IP에서 여러 번 접속하는 건 유의미한 데이터는 아니잖아요. 세션 기반으로, 현재 이미 조회수가 집계된 브라우저인지 파악해 유의미한 조회수 값을 불러오려고 했어요.
• 준영 : 트레이드오프를 따져가며 정답이 없는 문제를 결정하는 과정에 집중했어요. 네이버 블로그나 티스토리처럼 데일리 인사이트도 게시물을 비공개로 전환해도 첨부파일 URL만 있으면 누구나 파일을 다운받을 수 있어요. 이를 보안 취약점이라 여겨 접근 제한 로직을 구현했는데, 예상했던 것보다 시스템이 복잡해졌어요. 반면 실제 효과는 크지 않았어요. 대부분의 사용자는 첨부파일의 링크를 따로 보관하기보다 캡처를 하거나 직접 저장하니까요. 복잡도 대비 효과가 낮다고 판단해서 팀과 논의 끝에 해당 로직을 제거했어요.
Q. 뜻대로 잘 풀리지 않아 고민하기도 했을 것 같아요.
• 민정 : 이전 블로그에 있던 데이터를 현재 서버의 데이터베이스로 옮기는 데이터 마이그레이션을 진행했을 때가 생각나요. 서버에 저장된 약 1,900장의 이미지를 오브젝트 스토리지로 옮겼는데, 자꾸만 한두 장씩 이미지가 누락되는 거예요. 그런데 일부 파일의 경로 매칭이나 업로드 실패가 명확히 기록되지 않아 누락 여부를 바로 파악하기 어려운 상황이었어요.
그래서 마이그레이션 대상 이미지 목록과 실제 업로드 완료 목록을 비교하는 검증 과정을 추가했고, 실패한 파일은 따로 로그로 남겨 재시도할 수 있게 스크립트를 수정했어요. 이후 DB에 저장된 이미지 경로와 오브젝트 스토리지의 업로드 결과를 비교하면서 누락된 파일을 재업로드했고, 최종적으로 데이터 정합성을 확인할 수 있었어요. 단순히 데이터를 옮기는 것뿐만 아니라, 실패를 감지하고 재처리하는 구조까지 함께 설계해야 한다는 것을 배웠어요.
• 현흠 : 유저 페이지 프런트엔드는 과제 때 했던 작업을 거의 그대로 가져왔는데요. 메인 홈이 상세 페이지에 비해 로딩도 느리고 약간씩 오류가 발생했어요. 카테고리 버튼 오류를 해결하면 페이지네이션에 문제가 생기고, 페이지네이션을 고치면 검색창이 잘 안됐어요.
처음에는 개별 버그라고 생각했는데, 사수 선배와 의논하고 나니 클라이언트가 너무 많은 데이터 처리와 상태 관리를 담당한다는 구조적인 문제였음을 알게 됐어요. 그래서 CSR 중심 구조를 SSR 기반으로 개선하고, 일부 영역은 RSC로 전환해 데이터 처리 책임을 분리했어요. 그 결과 초기 로딩 속도와 유지보수성이 모두 좋아졌어요.
사용자에게 가닿는 소중한 개발 프로젝트 경험 개발 실무를 경험하고 얻은 꿈과 마음가짐
세 사람에게 PR팀이 같은 공간에서 일하고 직접 피드백을 준다는 점은 큰 원동력이 됐습니다. 실무에서 어떤 개발 방식을 써야 하는지 궁금했던 이들에게 바로 눈앞에 앉아 있는 사용자는 한 번 더 고민하고, 서로 깊이 소통한 이유였습니다. 자신의 개발 결과물이 누군가에게 가까이 닿았으면 한다는 바람으로, 세 사람은 데일리펀딩 IT실 인턴십 이후의 삶도 그려 봅니다.
Q. 회의실에 자주 모이던 모습이 인상 깊어요. 여러분에게 프로젝트를 수행하는 동력은 무엇이었나요?
• 준영, 현흠 : 제가 만든 서비스를 사용자가 쓴다는 게 개발의 가장 큰 매력이라고 생각해요. 데일리 인사이트 프로젝트는 얼굴도, 이름도 아는 사용자가 바로 앞에 있어 더 의미가 깊었어요. 더 잘 만들어야 하지 않나 하고 많이 생각했어요.
• 민정 : 기존에는 장고(Django)로 개발해 볼 수 있는 기회가 없었어요. 주변 사람들도 다른 프레임워크를 주로 쓰다 보니, 데일리펀딩에서 진행한 프로젝트가 Django를 핵심 도구로써 제대로 활용한 첫 작업이에요. 그래서 더 애정이 갔던 것 같아요.
Q. 4개월간 데일리펀딩 IT실 인턴십에 참여하면 느낀 장점은 무엇이었나요?
• 준영 : 가장 큰 장점은 사수 선배가 존재한다는 거예요. 여러 선배 개발자에게 정말 많이 보고 배웠어요. 초반에 ‘인턴십 참여하는 동안 하고 싶은 거 다 해 보라’고 말씀하셨는데요. 실무를 맡아 진행할 기회도 특별했지만, 무엇보다 어려움이 생길 때마다 조언해 주셨던 점이 기억에 많이 남아요.
• 민정, 현흠 : 실무 경험이 많지 않더라도 저희의 아이디어를 존중해 주시고, 다양한 시도를 해 볼 수 있게 자율성을 주신 점이 좋았어요. IT실의 방식과 결이 같다면 각자가 고민한 대로 로직을 설계할 수 있었던 것도 좋았어요.
Q. 이제 곧 인턴십이 끝나요. 여러분은 어떤 개발자가 되고 싶은가요?
• 민정 : 사람들의 삶, 인식 속에 자연스럽게 녹아든 개발자가 되고 싶어요. 지금의 우리는 리모컨이 없었던 때를 상상하기 어렵듯이, 사람들에게 너무나 당연한 서비스를 만들고 싶어요.
• 준영 : 앞으로도 사용자의 불편을 해결하는 서비스를 만들고 싶어요. 제가 만든 서비스를 주변 사람들이 만족하며 사용하는 모습을 보는 게 저에게는 가장 큰 동기부여예요. 그런 경험을 더 많이 쌓아 가는 개발자가 되고 싶어요.
• 현흠 : 문제가 발생했을 때 가장 먼저 논의하고 싶은 개발자라고 말씀드리고 싶어요. 시스템이나 구조 등을 다 이해해야만 많은 문제를 해결할 수 있잖아요. 여러 개발 분야를 공부하고 실무에서 적용하는 개발자가 되고 싶어요.