2022 Masters Course/Web Backend Course

2022 마스터즈 코스(백엔드) 59일차 회고(2022. 3. 31.) - "지난 3월 되돌아보기"

ikjo 2022. 3. 31. 20:03

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

 

수강 회고

오늘로 마스터즈 코스 과정을 시작한지 3개월이 지났는데, 이는 마스터즈 코스 과정의 절반이 지났다는 것을 의미하기도 한다. 마스터즈 코스 과정 일일 회고를 작성하면서 매달 말일에는 그동안 배우고 경험했었던 것들에 대해 되돌아 보곤 했는데, 오늘 역시 그러한 시간을 가져보고자 한다.

 

3월 첫 번째 주에 주어졌던 미션은 스프링 부트를 이용한 게시판 웹 앱 구현 미션이었다. 스프링 부트 미션은 지금까지 주어진 미션 중 가장 오랜 시간 진행되었던 미션으로 3주라는 시간 동안 스프링의 기본기를 학습하고 경험할 수 있는 과정이었으며 이 과정에서 MVC 패턴, 데이터 베이스 연동, 배포 등 웹 개발 기초를 배울 수 있었다.

 

이후에는 웹 서버 구현 미션이 주어졌는데, 이 미션은 2주라는 시간 동안 진행되었고 이를 통해 HTTP 메시지 구조, API 메서드 등 HTTP 기초를 학습하고 경험할 수 있었다. 웹 서버 구현 미션이 특이했던 점은 지난 2월에 진행됐었던 로또 프로그램 구현 미션과 같이 '페어 프로그래밍'으로 진행되었다는 점이다.

 

지난 2월에 진행됐었던 로또 프로그램 구현 미션에서는 '선을로'와 함께 페어 프로그래밍을 진행했었는데, 이번 웹 서버 구현 미션에는 'Sammy'와 함께 호흡을 맞추게 되었다. 2번의 페어 프로그래밍을 통해 그동안 '나 스스로'만 열심히 하면 되는 '개인 프로그래밍 방식'이 아닌 '상대(페어)와 함께' 열심히 해야 되는 '협력하는 프로그래밍 방식'을 경험할 수 있었으며 이때 '상대방의 스타일을 이해하고 존중'하는 것이 매우 중요하다는 것을 배울 수 있었다.

 

각자만의 방식대로 프로그래밍을 했었던 사람들이 만나 갑자기 '함께' 프로그래밍을 한다면 당연히 각자만의 스타일간 충돌이 있는 것은 당연하기 때문이다. 또한 이러한 차이를 인정하는 일은 말로는 쉽지만 막상 이 자리에 놓이게 된다면 마냥 쉬운 일만은 아니었다. 2번의 페어 프로그래밍 모두 나름 잘 마무리를 할 수 있었는데, 이는 나와 함께 했었던 페어들 역시 많이 양보를 해주신 덕이라는 생각이 들었다.

 

아무쪼록 지난 3월 역시, 지난 1~2월과 마찬가지로 시간가는 줄 모르고 정신없이 보냈었다. 오히려 지난 1~2월 보다 더 빨리 지나간 것 같기도 하다. 시간이 지날수록 시간이 흘러가는 것이 체감되는 속도가 점점 더 빨라지는 것 같아 불안감이 엄습하기도 한다. 💦 하지만 지난 과정간 매일 작성했었던 일일 회고를 통해 하루하루 생각했었던 이야기와 학습했었던 내용들을 보니 시간을 마냥 헛되이 보낸 것 같지는 않았다는 생각이 들었다. 더도 말고 덜도 말고 앞으로의 3개월(4~6월)이라는 시간도 지난 3개월(1~3월)만큼만 하자는 마음으로 과정에 임하고자 한다. 💪

 

 

학습 회고

  • 웹 서버 관련 미션 과제 풀이
    • 페어와 zoom 회의실에서 학습

 

오늘은 호눅스의 열정적인 마스터 클래스 강의로 데이터 베이스와 관련된 유익한 내용들을 많이 배울 수 있어서 유익한 시간이었다. 하지만 지금 당장 이를 100% 다 이해하기는 어려울 것 같아 시간을 두고 차근차근 알아가기로 했다. 아울러 Sammy와의 웹 서버 구현 페어 프로그래밍도 오늘로 어느 정도 갈무리를 잡을 수 있었다. 웹 서버 구현 미션을 진행하면서 HTTP 헤더에 대한 공부는 별도로 하지 못했었는데 이와 관련하여, 오늘 개인적으로 학습했었던 주요 내용으로는 다음과 같다.

 

HTTP 헤더란?

HTTP 메시지는 start-line, 헤더, empty-line, 바디로 구성되어 있는데, 이 중 헤더는 HTTP 요청이나 응답 전송에 필요한 모든 부가정보를 제공하며 헤더에는 대표적으로 메시지 바디의 내용 형식, 메시지 바디의 내용 크기, 압축, 인증, 요청 클라이언트, 서버 정보, 캐시 관리 정보 등을 포함하고 있다. 헤더의 종류는 굉장히 많으며 필요시 임의의 헤더도 추가 가능하다. 특히, 헤더의 필드 네임(속성명)의 경우 대소문자를 구분하지 않는 특징이 있다.

 

HTTP 헤더는 대표적으로 메시지 전체에 적용되는 정보를 제공하는 General 헤더, 요청 메시지에 대한 정보를 제공하는 Request 헤더, 응답 메시지에 대한 정보를 제공하는 Response 헤더, 표현 데이터를 해석할 수 있는 정보(html, json 등 데이터 유형, 데이터 길이, 압축 정보 등)를 제공하는 Representaion 헤더 등이 있다.

 

표현 헤더란?

우선 표현(Representation)이란 요청이나 응답에서 전달할 실제 데이터(리소스)를 표현(represent)하는 것으로 실제 데이터(리소스)를 html, xml, json 등의 별도의 형식으로 표현하는 것이다. 표현(Representaion)은 표현 메타데이터(Representation Metadata)와 표현 데이터(Representation Data)로 구성된다. 이때 표현 메타데이터는 표현 헤더가 제공하는 것으로 표현 데이터를 해석할 수 있는 정보이다.

 

Considering that a resource could be anything, and that the uniform interface provided by HTTP is similar to a window through which one can observe and act upon such a thing only through the communication of messages to some independent actor on the other side, an abstraction is needed to represent ("take the place of") the current or desired state of that thing in our communications. That abstraction is called a representation [REST].

For the purposes of HTTP, a "representation" is information that is intended to reflect a past, current, or desired state of a given resource, in a format that can be readily communicated via the protocol, and that consists of a set of representation metadata and a potentially unbounded stream of representation data.

 

출처 : https://datatracker.ietf.org/doc/html/rfc7231#section-3

 

표현 헤더는 요청 메시지와 응답 메시지에서 모두 사용되며 표현 데이터를 해석할 수 있는 정보(표현 메타데이터)를 제공하는데, 예를 들어 표현 데이터 형식(Content-Type), 표현 데이터의 압축 방식(Content-Encoding) 등의 정보를 제공한다.

 

Representation header fields provide metadata about the representation. When a message includes a payload body, the representation header fields describe how to interpret the representation data enclosed in the payload body.

The following header fields convey representation metadata:

+--------------------------+--------------------+

| Header Field Name | Defined in...    |

+--------------------------+--------------------+

| Content-Type         | Section 3.1.1.5 |

| Content-Encoding  | Section 3.1.2.2 |

| Content-Language | Section 3.1.3.2 |

| Content-Location   | Section 3.1.4.2 |

+--------------------------+--------------------+

 

출처 : https://datatracker.ietf.org/doc/html/rfc7231#section-3

 

 

좋았던 점

  • 마스터즈 코스 과정의 절반이 지났습니다. 작년에 위염으로 오랜 시간 힘들었기에 이번 마스터즈 코스 과정을 수행하는 것에 대해 내적 부담감이 있었지만 지난 3개월 동안 마스터즈 코스 과정을 잘 버텨온 것에 대해 만족스러움을 느낍니다. 🥂

 

 

아쉬웠던 점

  • 그동안 미션을 진행하면서 학습했었던 것들에 대한 정리가 부족해 아쉬운 마음이 들었습니다. 😥

 

 

이전 보다 개선되었던 점

  • 지난 3월이라는 시간은 타인과 비교하기 보다는 나 자신의 성장에 초첨을 맞추어 학습에 진전할 수 있었던 것 같습니다. 🥕