분류 전체보기 29

[코드리뷰] Qodo를 이용한 Github 코드리뷰 구현

1. 개요멘토링을 진행한 이후에 팀원들과 코드리뷰를 진행하는 것이 좋지만 누굴 알려줄 만큼의 지식이 있지도 않고 프로젝트 기간도 긴 편이 아니라서 AI를 이용한 코드리뷰를 이용해보기로 했고, 여러 코드리뷰를 찾던 중 "Qodo"라는 코드리뷰를 사용해보기로 헀다. 2. 코드리뷰란?소프트웨어를 실행하지 않고 사람이 직접 검토하는 과정을 통해 잠재적 결함을 찾아내고 개선해 나가면서 전반적인 소프트웨어의 품질을 높이고자 하는 활동즉, 한 개발자가 코드를 작성하면 다른 개발자들이 정해진 방법으로 피드백을 주고받는 과정을 의미한다.Code을 보고 서로 소통하면서 서로 배움을 얻는 활동장점코드 품질 향상지식 공유와 동반 성장프로젝트 안정성 및 일관성 확보건강한 개발 문화와 협업 3. 코드리뷰에서 지켜야할 가이드라인코..

프로그래밍 2026.06.03

[트러블 슈팅] CD 작업 중 프론트엔드가 올라가지 않음

1. 문제 상황최종 프로젝트에서 인프라 구축을 담당하게 되었기 때문에 Docker Hub에 우리 프로젝트를 띄우고 Github Actions로 CI/CD 자동화를 구축하려고 했다.CI는 문제 없이 수행되어서 CD 작업을 하던 중, 백엔드서버는 제대로 CD작업이 수행되었는데 프론트엔드서버는 제대로 수행되지 않았다. 2. 문제 확인먼저 Github Actions로 가서 정확히 어디서 오류가 발생했는지 확인해보니 feature/github 브랜치에서 main으로 갈때, CD가 문제되는 것이 확실하게 알게 됬다.해당 오류코드를 살펴보면 아래의 오류 메시지가 확실한 원인이라고 볼 수 있다.ERROR: failed to build: Cache export is not supported for the docker d..

JWT, Security에 대해서

1. JWT, Security가 왜 필요한가?웹서비스는 기본적으로 "너 누구야?" 를 매 요청마다 확인해야 한다.클라이언트 → 서버: "내 정보 줘"서버 → 클라이언트: "너 누군데? 로그인했어?" HTTP의 Stateless(무상태성) 특성: 웹을 구성하는 HTTP 프로토콜은 기본적으로 상태를 기억하지 못한다.인증(Authentication): 시스템에 접근하는 사람이 누구인지 확인하는 과정인가(Authorization): 인증된 사용자가 특정 리소스에 접근할 권한이 있는지 확인→ HTTP의 무상태성을 극복하고, 사용자의 상태를 유지하며 안전하게 서비스를 제공하기 위해 우리는 인증/인가 시스템을 구축해야 한다. 2. 세션 방식 vs JWT 방식세션 방식 (옛날 방식)사용자가 로그인하면 서버가 '세션 ..

프로그래밍 2026.05.26

최종 프로젝트 일지4 - 재회의

1. 멘토링으로 인한 요구사항 내용 변경사항멘토링을 받을 때, 멘토님께서 "현재 개발하는 기능이 너무 많아서 프로젝트 마감일인 4주 후까지 끝내기는 힘들어보인다" 라고 하셔서 금요일에 팀원들과 회의를 진행하면서 본래대로 라면 Velog 스타일을 가져오면서, 인스타그램처럼 타인에게 내 정원을 자랑하는 등의 방식을 추구했지만 “커뮤니티” 기능은 모두 삭제하고 정말로 개인화된 블로그 웹페이지로 노선을 틀었다. 2. 최종적인 요구사항 정의서우리팀은 과감히 커뮤니티의 모든 기능을 제거하고 통계, AI학습도구 제공, 정원시스템에 집중해서 사용자 개인에게 집중하는 서비스를 제공하기로 했고,기존에는 그저 기록정도만 하는 "식물도감"을 메인기능으로 끌어올려서 마치 게임의 업적처럼 해당 식물을 획득했을 떄의 기록을 저장하..

최종 프로젝트 일지3 - ERD / 요구사항 정의서 / WBS / 흐름도

1. 요구사항 정의서우리팀은 자기 개발 및 학습에 대한 사람을 위한 TIL 작성블로그를 준비했고 API 명세서, 기능 명세서, WBS, ERD 등을 작성하기위해서 우선적으로 요구사항 정의서를 작성해봤다. 일단 1차적으로 팀원들과 함께 논의한 아이디어들을 조합해서 그것을 AI에게 내용 정리를 해달라고 했다.그 내용을 팀원들과 하나하나 뜯어가면서 엑셀을 정리헀더니 처음 했던 것보다 2배 이상의 분량이 되어버렸다. 이번 요구사항 정의서를 작성할 떄 느낀거는 "어차피 내가 애기한대로 진행할거면 대체 왜 반대표를 던지는거야?" 라는 생각이 너무 많이 들었다.이전 프로젝트 경험으로 이런 초기 문서작업은 확실하고 제대로 잡고 가야겠다고 생각이 들어서 정말 적극적으로 하나하나 물어보고 팀원들이 이해하지 못하면 비유를 ..

최종 프로젝트 일지2 - 아이디어 회의

아이디어TIL 화분에 지속적으로 꽃을 심게하자 (통과)지속적으로 수확하자 Vs 목표 끝나면 해당 화분에 추가적인 TIL 작성XTIL 목표치를 작성 완료하면 TIL 페이지에선 꽃이 남은 채로 추가 작성X화분을 폴더처럼 사용하고 작성이 모두 완료되면 해당 꽃을 수확해서 처음부터 키우게 하기사용자에게 선택지 주는건 반대임사용자에게 꽃을 냅둘지, 수확하고 새로 키우게 할지 결정하자전에부터 내가 애기한건데 왜 그때는 안 들어주고 지금은 제대로 들어주냐고 ㅡㅡ식물 키우기를 성장의 지표로서 사용하자성장 지표인 식물을 여러 단계로 쪼개서 나타내자근데 성장의 지표로 사용하자는데 너무 빈약한데?포인트 제도 개선포인트제도를 제거하자는 내용 등장테마, 템플릿이 사라지면서 의미가 퇴색되어 버림TIL로 벌어들인 포인트로 AI 토..

최종 프로젝트 일지1 - 아이디어 회의

어제를 시작으로 최종프로젝트를 시작하게 되었다. 그래서 이전과는 다르게 기록의 힘에 의지해서 더 나은 방향으로 나아가기 위해서 글을 작성해본다. 1. 오늘 내가 한 내용클라우드 책임자로 설명회 참석본격적으로 코드를 작성하기 전에 디스코드 채팅방, 음성채널 등 정리하고 PR 메시지 자동화 준비Tistroy와 Velog같은 블로그의 차이점을 분석하고 어떤 방식으로 갈건지 팀원들에게 제시Tistory나 Naver Blog같이 블로그를 직접적으로 꾸미는 방식보다는 글만 작성하는 Velog방식을 선택함 (통과)개인적으로 정말 불만이긴헀지만 그나마 대시보드형태든 개인의 특징을 들어낼 수 있는 방식을 제공하자고 제의 (통과)전통적 방식인 카테고리를 작성해서 해당 카테고리 하위에 글을 작성하는게 아니라 시리즈라는 폴더..

[Docker] Docker 컨테이너 Life Cycle

1. Docker 컨테이너 Life CycleDocker 컨테이너 생명주기란 Docker 컨테이너의 생성부터 종료까지의 단계/상태를 나타내는 단계를 의미한다.도커 컨테이너의 생명주기는 여러 단계로 구성되어있고 주요 상태는 아래와 같다.더보기생성: 생성되었지만 아직 시작되지 않은 컨테이너실행: 모든 프로세스가 실행 중인 컨테이너일시정지: 프로세스가 일시 중지된 컨테이너중지: 프로세스가 중지된 컨테이너삭제: 비활성화된 컨테이너 2. 컨테이너 생성도커 이미지를 기반으로 컨테이너를 생성하는 첫 단계로서 컨테이너 파일 시스템과 네트워크, 볼륨 설정 등이 준비되지만, 내부의 프로세스는 아직 실행되지 않은 Created 상태docker create --name 3. 컨테이너 시작생성된 컨테이너를 실제로 가동하는 ..

프로그래밍 2026.05.17

[Docker] Docker의 개념 및 구성요소

개발을 하다 보면 "내 컴퓨터에서는 잘 되는데, 서버에서는 왜 안 되지?"라는 상황을 자주 마주하게 된다.팀원끼리 macOS, Windows 등 각자 다른 운영체제와 개발 환경을 사용하다 보면 발생하는 고질적인 문제다.이러한 환경의 차이를 극복하고, 애플리케이션을 어디서든 동일하게 실행할 수 있도록 도와주는 것이 도커(Docker)다.1. Docker란?소프트웨어 개발에서 오랫동안 문제가 되었던 중 하나는 '환경 차이'가 있다. 다들 팀원을 꾸려서 프로젝트를 진행할 때, 서로의 환경이 달라서 문제가 되었던 경험이 있을 것이다.더보기OS 차이 (Windows / Linux / Mac)라이브러리 버전 차이의존성 충돌설정 파일 불일치위와 같은 문제를 해결하기 위해서 탄생한 것이 Docker로 애플리케이션을 신..

프로그래밍 2026.05.13

[Docker] Docker가 실행되지 않는 문제 해결

1. 문제상황이번에 Docker를 설치해서 공부하려고 했는데 "Starting the Docker Engine"라는 메시지와 함께 무한 로딩이 되는 버그를 발견하게 되었다.해당 버그 떄문에 Docker를 전혀 사용할 수가 없어서 해당 버그를 고치는 방법을 찾아보았다.2. 해결과정보통 윈도우 환경에서 도커가 제대로 실행되지 않는 가장 큰 이유는 WSL(Windows Subsystem for Linux) 및 가상화 설정 문제일 가능성이 가장 높다. 윈도우 검색창에 "Windows 기능 켜기/끄기"을 검색하고 열기 해당 창이 뜨면 "Linux용 Windows 하위 시스템", "가상 머신 플랫폼"을 활성화해주자만약 해당 2개의 옵션으로도 되지않는다면 "Hyper-V" 또한 활성화해주자 하지만 이러한 Windo..

프로그래밍 2026.05.13