2차 팀 프로젝트 마무리

이번주 목요일에 2번째 팀 프로젝트가 끝났다.

 

제목은 '모여봄', 팀 프로젝트 모집을 위한 사이트를 개발하였다.

Spring Boot를 활용한 팀프로젝트는 두번째였고 나머지 팀원들은 해본 분도 있고 처음 해보시는 분도 있었다.

 

처음 기획했던것과 디자인이나 기능들이 조금 상이한 부분이 있지만 아무래도 첫(?) 팀 프로젝트이기도 하고,

2개월에 걸쳐서 프로젝트를 완성했기에 핵심적인 기능에 초점을 맞추고 구현하였다.

 

완성된 기능으로는 기본적인 로그인, 게시판 CRUD, 팀 프로젝트 관리 등등의 기능이 있으며

조금 더 힘을 주고 만든것은 유저관련 기능과 관리자 기능이 조금 더 완성도가 높았다.

 

나는 여기서 팀 API를 맡아서 개발하였는데, 간단한 CRUD를 활용하여 여러가지 팀 관련 기능을 구현하였다.

디자인은 처음에는 테일윈드 템플릿을 쓰기로 했었으나, 결국 프로토타입 같은 디자인으로 마무리 되었다.

 

그래도 이정도면 나름 잘 완성된 것 같아 모든 팀원들에게 감사하고 있다.

우리 팀원들이 없었으면 이렇게 단기간안에 성과를 내기는 힘들었을 것이다.

이번 프로젝트를 하면서 얻은 것

두번째 Spring Boot 프로젝트이다 보니 솔직히 조금 더 자신이 있던것도 사실이였다.

하지만 정말 오랜만에 다시 해보니 부족함이 느껴졌다.

 

그러면서 무심코 지나쳤던것에 대한 새로운 궁금증도 생겼다.

예를 들어 프론트에서 요청을 보낼때 사용하는 HTTP 메서드의 종류에는 Post, Get, Put, Delete 가 있다.

하지만 그것들이 무엇이 다른가에 대해서는 생각해본적이 없었다.

 

이번 프로젝트로 예를 들어보자면

 

Post: 게시글 작성,

Get : 게시글 가져오기

Put : 게시글 수정하기

Delete : 게시글 삭제

 

이렇게만 알고 있었다.

 

하지만 그래서 상세하게 뭐가 다른가?

Post로 게시글 수정도 가능하고 Delete 하면 안되는가?

왜 굳이 저렇게 나눠놨는가에 대한 고찰은 해본적이 없다.

 

그 이유는 다음과 같았다.

1. GET (조회)

  • 역할: 서버에서 특정 리소스의 정보를 요청할 때 사용합니다.
  • 특징:
    • 서버의 데이터를 변경하지 않고 조회만 합니다.
    • 요청에 필요한 데이터를 URL의 쿼리 파라미터에 담아 전송합니다.
    • 브라우저나 프록시 서버에 의해 캐싱될 수 있습니다.
    • 보안상 민감한 데이터를 전송하는 데는 적합하지 않습니다.
    • 멱등성을 가지기에 동일한 요청을 여러 번 보내도 결과가 같습니다.

2. POST (생성)

  • 역할: 서버에 새로운 리소스를 생성하거나 데이터를 전송할 때 사용합니다.
  • 특징:
    • 요청에 필요한 데이터를 요청 본문(body)에 담아 전송합니다.
    • 서버의 데이터를 변경합니다.
    • 캐싱되지 않습니다.
    • 멱등성을 가지지 않기에 동일한 요청을 여러 번 보내면 결과가 다를 수 있습니다.

3. PUT (수정)

  • 역할: 서버의 특정 리소스를 수정할 때 사용합니다.
  • 특징:
    • 요청에 필요한 데이터를 요청 본문에 담아 전송합니다.
    • 서버의 데이터를 변경합니다.
    • 멱등성을 가지기에 동일한 요청을 여러 번 보내도 결과가 같습니다.
    • 리소스의 전체를 변경할때 사용합니다.

4. DELETE (삭제)

  • 역할: 서버의 특정 리소스를 삭제할 때 사용합니다.
  • 특징:
    • 서버의 데이터를 삭제합니다.
    • 멱등성을 가지기에 동일한 요청을 여러 번 보내도 결과가 같습니다.

여기서 멱등성이란 여러번 연산하더라도 결과가 달라지지 않음을 의미한다.

 

추가로 이것을 찾아보면서 새롭게 알게된 HTTP 메서드도 있다.

 

  • PATCH: PUT과 마찬가지로 리소스를 수정할 때 사용하지만, 리소스의 일부만 수정할 때 사용합니다.
  • OPTIONS: 서버가 지원하는 HTTP 메서드나 기타 옵션을 요청할 때 사용합니다.
  • HEAD: GET과 동일하게 리소스를 요청하지만, 응답 본문은 받지 않고 헤더 정보만 받습니다.

이렇게 매번 당연하게 사용해오던 문법에 대해서도 의문을 가지니 그 상세한 구조나 사용법을 알 수 있었다.

이는 프로그래밍을 할 때 뿐만 아니라 다른 모든것에도 적용되는 것 같다.

 

이번 프로젝트에서는 이외에도 테일윈드의 사용법, Vue.js, CORS, SSE와 같은 기술들도 배울수 있는 귀중한 시간이였다.

자소서 이야기

이번에 프로젝트가 끝남과 동시에 지원하기로 했던 한화시스템의 자소서를 작성하기 시작하였다.

하지만 이전에도 자소서를 제대로 쓰지 못해서 좌절했던 기억이 있다.

 

실패는 성공의 어머니이고 첫술에 배부를수 없다지만 글을 쓰는것은 정말 쉽지 않았고 내 자신에 많이 화가났다.

 

나는 왜 이룬것이 없을까?

나는 왜 이렇게 글을 못쓰는것일까?

 

사실 그 이유는 간단하다.

평소에 자기자신을 소개하는 글을 써본 사람이 몇이나 될까?

 

일단 나는 자소서를 작성할때 이외에는 단 한번도 써본적도, 고민해본 적도 없다.

그러니 당연히 힘들수밖에 없고 그래서 모두들 미리미리 써놓는 연습을 하라고 하는것이다.

 

나의 경우에 생각해보면 주변에서 내게 글은 잘 쓴다고 말한다.

그도 그럴것이 나는 평소에도 책 읽기를 좋아해서 머릿속 도서관에서 상황에 맞는 글귀를 찾아내서 작성하기 때문이다.

 

이것을 자소서에 적용하여 내가 느낀 감정을 표현하자면,

자소서를 쓸 때 내 머릿속에는 그 어떤 문장도 떠오르지 않았다. 왜냐면 단 한글자도 기록되어있지 않았기 때문이다.

 

평소에 틈틈히 조금씩이라도 자기 자신을 소개하는 문장에 대해서 생각해보거나,

다른사람이 작성한 자소서를 읽어보는 노력을 했다면 이런일은 없었을 것이다.

 

이것은 비단 자소서에만 적용되는것이 아니라 코딩 테스트에도 적용된다.

코딩 테스트도 꾸준히 준비하여 머릿속에 레퍼런스를 저장하고 그에 맞춰 빠르게 정답을 맞춰내는것이 핵심이다.

 

이미 늦은것일수도 있지만 이렇게라도 뒤늦게 알아서 다행이라는 생각도 든다.

분명 주변에서도 이와 같은 조언을 많이 해주었지만 내가 그 말을 듣고 그대로 이행했다면 이 글도 안쓰고 있었을 것이다.

 

다음 주 부터는 당장 프로젝트는 없지만, 바쁜 나날이 계속될 것 같다.

하지만 이런 상황에서도 한번에 모든걸 하려하기 보단 언제나 우선순위를 정해서 정리하는것이 좋을것 같다.

 

+ Recent posts