2022 Masters Course/Project Course

2022 마스터즈 코스(백엔드) 62일차 회고(2022. 4. 5.) - "본격적인 프로젝트 협업"

ikjo 2022. 4. 5. 21:18

해당 글은 코드스쿼드 2022 마스터즈 코스 "Java 웹 백엔드" 과정을 수강하면서 학습한 내용 등에 대한 회고 글입니다. :)

 

수강 회고

어제 프로젝트 팀원들과 간단한 인사와 함께 앞으로 프로젝트 진행방향 등에 대해 논의한 후 오늘부터 본격적으로 프로젝트 과제를 수행하기 시작했다. 오늘은 같은 백엔드 클래스 팀원 Hanse와 호흡을 맞추면서 데이터 베이스 및 API 설계를 진행했고, 이와 관련해서 프론트 엔드 클래스 팀원들과 논의 및 협의를 진행했다. 처음으로 프론트 엔드 담당자와 업무적으로 협의를 나눌 수 있었던 시간이었는데, 역시 예상했었던 만큼 진행 과정에 있어서 많은 소통을 필요로 했다.

 

특히, API를 설계함에 있어서 어떠한 데이터를 API에 포함시킬지, 어떠한 계층 구조로 작성할지 등 프론트 엔드 입장에서 생각해봐야하고 많은 대화를 나눌 필요가 있었다. 아울러, 이 과정에서 상대의 요구사항과 나의 요구사항을 명확하게 전달할 필요성도 있었다.

 

과거 회사에서 근무하던 시절 타업체 내지 타부서 사람들과 어떤 업무와 관련해서 논의를 할 때 서로의 생각이 일치한다고 착각하는 경우가 많았다. 이러한 논의를 마친 후 나중에 다시 해당 사안에 대해 다시 논의할 때즈음(해당 사안을 진행시킬 때즈음)에는 서로의 생각이 달랐음을 깨닫곤 했다. 이는 근본적으로 인간은 '자기에게 유리한 방식'대로 생각할 확률이 높기 때문이기도 하다.

 

이러한 불상사를 미연에 방지하기 위해 필요한 것은 '회의록'이었다. 사람의 생각은 시간과 환경에 따라 변하지만 기록은 변하지 않는다. 팀 프로젝트 업무를 수행하면서도 그러한 불상사가 안 일어난다는 보장이 없기 때문에 '회의록' 같은 역할을 하는 일종의 '안전장치(API 명세 등)'가 필요할 것 같다는 생각이 들었다.

 

 

학습 회고

  • 투두리스트 구현 프로젝트
    • 팀원들(백 엔드 2명, 프론트 엔드 2명)과 zoom 회의실에서 학습

 

오랜만에 MySQL과 Spring을 다루었기에 오늘 작업을 진행하면서 여러 오류들에 직면할 수 있었는데, 이와 관련해서 학습했었던 주요 내용으로는 다음과 같다.

 

Failed to add the foreign key constraint

이 오류는 테이블 생성 시 foreign key를 설정할 때 참조 대상이 Unique 또는 Primary가 아닌 경우에 발생하는 오류이다. 예를 들어 다음과 같이 category 테이블과 work 테이블을 생성한다고 가정해보자.

 

CREATE TABLE category (
    id INT NOT NULL AUTO_INCREMENT,
    name VARCHAR(64) NOT NULL,
    PRIMARY KEY (id)
);

CREATE TABLE work (
    id INT NOT NULL AUTO_INCREMENT,
    category_name VARCHAR(64) NOT NULL,
    title VARCHAR(255),
    content VARCHAR(255),
    created_date TIMESTAMP NOT NULL,
    PRIMARY KEY (id),
    FOREIGN KEY (category_name) REFERENCES category(name)
);
 
 
이때, work 테이블을 생성 시 category_name 필드의 값으로 categey 테이블의 name 필드의 값을 참조한다면 'Failed to add the foreign key constraint' 오류가 발생할 것이다. 이 경우에는 다음과 같이 수정해볼 수 있다.

 

CREATE TABLE category (
    id INT NOT NULL AUTO_INCREMENT,
    name VARCHAR(64) NOT NULL,
    PRIMARY KEY (id)
);

CREATE TABLE work (
    id INT NOT NULL AUTO_INCREMENT,
    category_id INT NOT NULL,
    title VARCHAR(255),
    content VARCHAR(255),
    created_date TIMESTAMP NOT NULL,
    PRIMARY KEY (id),
    FOREIGN KEY (category_id) REFERENCES category(id)
);
 
 
이때 추가로 유의해야할 점은 foreign key 설정 시 참조하는 필드와 참조되는 필드의 데이터 타입 역시 같아야 한다.
 
 

좋았던 점

  • 오늘 처음으로 프론트 엔드 수강생분들과 과제(API 등)와 관련해서 업무적으로 협의를 하며 과제를 진척시킬 수 있어 유익한 시간이었습니다. 😀

 

 

아쉬웠던 점

  • 오랜만에 스프링을 다루기에 오늘 과제를 진행하는 중 여러 장애에 부딪혀 이를 해결하는데 다소 많은 시간이 소요되어 아쉬웠습니다. 😥

 

 

이전 보다 개선되었던 점

  • 나만의 생각에 고착되있었던 이전과 달리 오늘은 프로젝트 과정과 관련하여 업무 협의를 하면서 나름(?) 상대방 입장에서 생각해보는 시간을 가질 수 있었습니다. 🥂