목록전체 글 (405)
Just Do IT!
어느덧 젝트가 끝이 났다. 딱 지난주 토요일에 최종 발표를 하고 끝이 났는데 여행 다녀오느라 이번주에야 회고를 쓴다.중간 회고를 쓴지도 얼마 안된거 같은데...시간 참 빠르다 https://ject.kr/ 젝트젝트(JECT)는 다양한 포지션 멤버들과 협업할 수 있는 IT 사이드 프로젝트 동아리예요. 홈페이지에서 더 자세한 내용을 확인해보세요!ject.kr AI 활용 첫 프로젝트 어떤 식으로 회고를 써야 할까 고민했는데 그냥 일단 이번 프로젝트에서 생각나는 건 AI를 활용했다는 점이다. 지난 회고에도 언급했듯이, 이번에 우리 팀이 진행한 프로젝트는 블로그 협찬 관련 프로젝트이다. 블로그 링크를 넣으면 분석해주고 합격률이 높은 블로그 체험단 신청 링크를 보여주는 형식이다. 그쪽 개발은 내가 하지..
올해도 동아리 활동을 하게 되었다.멋사 이후에 오랜만인데, 이것저것 할 수 있는걸 찾다보니 우연히 좋은 기회에 젝트라는 동아리를 알게 되었고 합류하게 되어 2월부터 진행 중이다. 젝트 사이트https://ject.kr/ 젝트젝트(JECT)는 다양한 포지션 멤버들과 협업할 수 있는 IT 사이드 프로젝트 동아리예요. 홈페이지에서 더 자세한 내용을 확인해보세요!ject.kr 6팀 백엔드 개발자 처음에 백엔드 개발자들끼리 모여있을 때만 하더라도 대학생들이 많고 직장인이 별로 없었는데, 막상 팀에 배정되고 나니 나를 제외한 모든 분들이 직장인이었다. 뭔가 배울 게 많다는 것도 좋았지만 제일 좋았던 점은 팀장님이 연차가 쌓인 개발자분이라 그 부분이 제일 좋았다. 6팀에 배정되었고 처음에는 PM 2, 디..
지금 프로젝트 진행 중에 죽어도 prisma가 연동되지 않고 서버가 켜지지 않아서 몇 시간 애먹다가 (chat gpt와 함께) 겨우 해결했다. 그래서 오랜만에 블로그에 오류 해결기를 남겨본다. 프로젝트 환경Nx MonorepoNestJSPrisma 7aPostgresSQL (Docker)WepbackNode 20 오류 내용Error: @prisma/client did not initialize yet. 서버를 실행하려고 하니까 자꾸 저런 오류가 나왔다.Prisma Client가 생성되었거나 로드되지 않았다고 하길래 npx prisma generate로 다시 generate 해봤는데 이건 성공했는데 에러는 그대로였다. 오류 원인Prisma 7부터는 schema.prisma에 아래처럼 작성하면 안되..
2026년이 시작한지 22일인데, 2025년 회고를 쓰자니 좀 민망하다.12월-1월 개인적인 사정으로 바빠서 블로그를 할 생각이 없었는데, 생각해보면 SODA 회고글이 마지막이다.하반기에도 뭔가를 했었는데 역시 글로 남기지 않으면 증명이 되지 않는다. KERNEL 수료 작년 상반기에 가장 큰 일은 역시나 KERNEL 수료겠지.2월부터 5월까지 진행했고, SODA 프로젝트는 한 달 더 진행했으니까 상반기 내내 KERNEL을 했다고 할 수 있다.솔직히 말하면 백엔드 개발에 대한 경험이 별로 없다고 생각해서 시작했었는데 2025년 최고의 선택이었다. 일단 SODA 프로젝트를 진행하면서 좋은 팀원들을 만나서 다양한 경험을 할 수 있었고, 지금도 연락하는 친구들을 얻게 되었으니까. SODA 진행하면서 ..
캠프가 끝난 뒤 계속 이어졌던 SODA 프로젝트가 어제로 끝이 났다.캠프가 5/16에 끝났고 어제가 6/19....거의 한 달 가량을 더 진행했다.사실 중간중간 개인 일정이 좀 있었어서 캠프 때처럼 풀로 진행하진 않았지만 그래도 유의미한 성과가 있어서 다행이다. 부하 테스트 진행 테스트 환경 ec2, RDS 세팅 → 더미데이터삽입 → 스크립트 작성 → 부하테스트 → 성능 개선(쿼리최적화/튜닝, 레디스 적용, 서버 scale-out 등) → 부하테스트 → 성능 개선 (반복) 이 순서대로 부하 테스트를 진행했다.사실 나는 이렇게 부하 테스드, 성능 개선하는 경험이 이번이 처음이 많이 배웠다. 테스트 하기 위해 새로운 서버를 세팅하고, 더미 데이터도 엄청나게 많이 넣었다. 테스트 환경 세팅과 더미 ..
성능 개선 전 로그 분석최근 질문 목록 조회 (/articles/my) API 실행 시 로그를 파악하면 아래의 기능들이 있었다.인증 및 사용자 정보 조회JWT 인증 후 auth_id 기반으로 Member 조회비교적 빠름질문 목록 조회특정 member_id가 작성한 삭제되지 않은 질문을 createdAt 기준으로 3개 가져옴article, stage, project 테이블 join쿼리 자체가 크게 느리지는 않음질문 전체 개수 조회member_id가 작성한 삭제되지 않은 질문 전체 개수 조회article, stage 테이블 join쿼리 자체가 크게 느리지는 않음⇒ 쿼리 실행 시간 외 다른 부분에서 시간이 소요되고 있음을 파악할 수 있었다.그래서 각 단계 별 실행 시간을 측정하여 병목지점을 찾으려고 로그를 추..
EXPLAIN이란?실행 계획DB 서버가 어떤 쿼리를 실행할 것인가 알고 싶을 때 사용하는 명령어DB에는 옵티마이저라는 엔진이 존재하는데, 가장 효율적인 방법으로 SQL을 수행할 최적의 처리 경로를 생성해주는 DBMS의 핵심 엔진이다.옵티마이저는 개발자가 SQL문을 작성하면 바로 쿼리문을 실행하는 것이 아닌, 쿼리문을 어떻게 실행시킬지에 대한 여러 실행 계획을 세운 뒤, 예상 비용을 고려해 가장 효율이 좋은 실행 계획으로 쿼리를 실행시키는 방식으로 수행된다.EXPLAIN은 옵티마이저의 실행 계획이다. 실행 코드는 매우 간단하다EXPLAIN [EXTENDED] SELECT ... FROM ... WHERE ... 이렇게 명령어를 입력해준 다음, 실행 결과를 분석하여 성능을 최적화할 수 있다. MYSQL E..
지난 주, 5월 16일에 끝났지만 이제서야 정신을 차리고 수료 후기를 작성해본다.원래는 지난주~이번주 합쳐서 SODA 프로젝트 회고글도 작성하려고 했는데 그건 내일 해야지. 아무튼!내가 지금까지 했던 부트캠프보다 짧았지만, 체감상 두 배는 힘들었던 KERNEL 360이 끝이 났다. 생각보다 짧은 최종 프로젝트 기간 이전에 KOSTA 에서 프로젝트를 6주간 진행했었는데 그것보다 더 긴 8주였음에도 프로젝트 기간이 짧다고 느껴졌다.물론 KOSTA에서 진행했떤 프로젝트는 내가 자바, 스프링을 처음 공부하고 적용해본 프로젝트라서 돌아가는 코드를 짜기에만 급급해서 더 그렇게 느꼈을 수도 있다. 이번에는 나름대로 리팩토링도 해보고, 팀원들 간 코드 리뷰도 해보고...그리고 캠프 끝난 지금 다시 만나서 자..
https://www.s0da.co.kr/ SODAB2B 프로젝트 관리는, SODA에서www.s0da.co.kr 이제 슬슬 끝나가니 회고글에도 슬쩍 추가해보는 우리 프로젝트 링크.자잘한 오류들 및 디자인만 수정하면 발표날이 될 듯 하다. 리팩토링 기간 월요일, 화요일은 연휴 기간이라 물 흐르듯 이틀이 사라졌다.회고글에도 작성했듯이 시간이 그렇게 많이 있지는 않아서 강의 내용 그대로 리팩토링하지는 않았고 우리 프로젝트에 맞춰서 리팩토링했다. validator는 application layer에 위치하도록.provider interface는 domain layer, proivderImpl 파일은 intrastructure layer에 만들면서 repository를 직접 참조하지 않도록 했다. 이..
시간 진짜 빠르다.처음에 프로젝트 시작할때 3월이었던 것 같은데 벌써 5월이라니... 이번주는 이슈 테스트가 있어서 그 전에 기능 완성하기 위해 노력했고 드디어 기다리던 리팩토링을 시작한 주간이엇다.연휴가 껴있어서 하루 늦은 7주차 회고 시작 프로젝트 생성 추이 기능 구현 지난 회고글 에도 적혀있는데, 프로젝트 생성 추이 통계를 위헤 ProjectDailyStats 테이블을 생성했다.혼자서 구현하는 걸 고민했을 때는 스프링 배치를 적용할까, 고민이었는데 팀원들과 회의를 한 결과 별다른 이유 없이 배치를 적용하는 건 아니라는 결론을 내렸다. 그래서 혼자 적용했던 것들을 삭제하고 비동기 이벤트 처리로 변경했다. https://daydream-sy.tistory.com/399 스프링 이벤트를 활용한..