[WIL] 220801-220807

Ariul·2022년 8월 7일
0

🔍Weekly I Learned

목록 보기
4/7

주특기 숙련

4주 차에는 팀 과제와 개인 과제를 통해 Spring Security를 공부했다.

지난주에 미완성으로 제출했던 과제를 결국 토요일에 완성해서 스프링에 한 발 다가갔다고 좋아했는데!
이번 주에 시큐리티를 다루면서 두 발 멀어진 느낌! 하하!

일주일 내내 머릿속에 맴돌았던 노래


1. 팀 과제

팀 과제는 스프링의 핵심 키워드에 대해 공부하고 정리하는 것이었다.

💡ORM이 무엇인가요?

  • Object Relational Mapping(객체 관계 매핑)

  • 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해 주는 것을 말한다.

    • 객체 지향 프로그래밍은 클래스를 사용하고, 관계형 데이터베이스는 테이블을 사용한다.
    • 객체 모델과 관계형 모델 간에 불일치가 존재한다.
    • ORM을 통해 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하여 패러다임 불일치를 해결한다.
  • 장점
    - 객체 지향적인 코드로 인해 더 직관적이고 비즈니스 로직에 더 집중할 수 있게 도와준다.
    - 재사용 및 유지 보수에 용이하다.
    - DBMS에 대한 종속성이 줄어든다.

  • 단점
    - ORM으로만 완벽한 서비스를 구현할 수 없다.
    - Procedure가 많은 시스템에선 ORM의 객체 지향적인 장점을 활용하기 어렵다.
    - 프로젝트의 복잡성이 크면 구현하는 난이도가 상승한다.

💡Database, Dbms, SQL이 무엇인가요?

  • Database: 컴퓨터 시스템에 전자 방식으로 저장된 구조화된 정보 또는 데이터의 체계적인 집합을 의미한다.
  • DBMS(Database Management System): 사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해 주고 데이터베이스를 관리해 주는 소프트웨어
  • SQL(Structured Query Language): 관계형 데이터베이스 관리 시스템(RDBMS)에서 자료를 관리 및 처리하기 위해 설계된 언어

RDBMS

  • 테이블이 다른 테이블들과 관계를 맺고 모여 있는 집합체
  • 외래 키(Foreign Key)를 이용하여 테이블 간 Join이 가능하다
  • 정해진 스키마에 따라 데이터를 저장하여야 하므로 명확한 데이터 구조를 보장한다.
  • 관계는 각 데이터를 중복 없이 한 번만 저장할 수 있다.
  • 스키마로 인해 데이터가 유연하지 못하다.

NoSQL(Not Only SQL)

  • RDBMS와 달리 테이블 간 관계를 정의하지 않는다. 따라서 테이블 간 Join도 불가능하다.
  • 스키마가 없익 때문에 유연하며 자유로운 데이터 구조를 가질 수 있다. 언제든지 저장된 데이터를 조정하고, 새로운 필드를 추가할 수 있다.
    -데이터 중복이 발생할 수 있으며 중복된 데이터가 변경될 경우, 모든 컬렉션에서 수정을 해야 한다.

💡MVC는 무엇인가요?

하나의 서블릿이나 JSP 만으로 비즈니스 로직과 뷰 렌더링까지 모두 처리하게 되면, 너무 많은 역할을 하게 되고, 결과적으로 유지 보수가 어려워진다.

MVC 패턴은 하나의 서블릿이나, JSP로 처리하던 것을 컨트롤러(Controller)와 뷰(View)라는 영역으로 서로 역할을 나눈 것을 말한다.

  • Model: 뷰에 출력할 데이터를 담아둔다. 뷰가 필요한 데이터를 모두 모델에 담아서 전달해 주는 덕분에 뷰는 비즈니스 로직이나 데이터 접근을 몰라도 되고, 화면을 렌더링 하는 일에 집중할 수 있다.

  • View: 모델에 담겨 있는 데이터를 사용해서 화면을 그리는 일에 집중한다.

  • Controller: HTTP 요청을 받아서 파라미터를 검증하고, 비즈니스 로직을 실행한다. 그리고 뷰에 전달할 결과 데이터를 조회해서 모델에 담는다.


2. 기능이 추가된 블로그 백엔드 서버 만들기 개인 과제

지난주 요구사항에서 회원가입, 로그인, 댓글 작성/수정/삭제 기능이 추가되었다.

과제의 핵심은 Spring Security로JWT 토큰 구현하기

결론부터 말하자면 이번 주 과제도 미완성이다 으아아 쾅쾅ㅇ와캉!@!@!!!

이번 주는 어쩌다 과제를 완성하지 못했을까 정리해 보면,

캠프에서 제공해 주는 강의도, 많은 자료들도 WebSecurityConfigurerAdapter 상속받아 사용함
스프링 부트 2.7+부터 WebSecurityConfigurerAdapter 지원 중단
SecurityFilterChain을 Bean으로 등록하는 방식의 자료 찾기 돌입 (오~ 무슨 자신감~?🤷)
이틀 동안 붙잡고 있다 결국 두 손 두 발 들고 버전 낮춰 진행 
이제 잘 할 수 있을 거라 생각했지만 Refresh Token에서 막힘
헉스 4일 동안 JWT만 붙잡고 있었더니 다른 기능은 손도 못 댐
이러다 빈 파일만 제출하겠다는 걱정에 Access Token 하나만 가지고 진행
회원가입하면 DB에 저장되고 토큰 발급도 받았는데 로그인 유저임을 인식 못 함
로그인 유저만 사용할 수 있는 기능을 구현해야 하는데.........ㅎㅎ
이리저리 고치다 보면 빨간 줄 한가득🩸 
하하 funny.
.
.
.

이야 글로 정리해 보니 더 해괴망측한 일주일을 보냈구나,,

돌이켜보니, 모든 문제는 조급함에서 나온 것이었다.
토큰만 주구장창 붙잡고 있었는데 해결되지 않았고, 시간은 흐르고,, 구현한 기능은 없고,,,
뭐라도 해야 한다는 생각에 조급했다.

좀 더 차분하게 진행했다면,
어디서 오류가 났는지 파악하기 수월했을 수도,
그래서 이거 했다 저거 했다 막히면 돌아갔다 다시 왔다 하지 않고
순차적으로 일을 진행할 수 있었을지도..


3. 배우고 느낀점, 발전시켜야 할 점

항상 Take it easy 제발 좀 Take it easy

어떤 순간에도 여유를 잃지 말자. 라고 쓰려고 했는데
그건 WIL을 쓰고 있는 지금 이 순간에나 가능한 말인 거 같아 지웠다.

그렇다고 과제를 할 때마다 조급함에 끙끙거릴 수는 없으니까
스스로에게 습관처럼 되뇌어야 하는 말을 꼽자면,
Take it easy
Take it easy
PLEASE!!!! TAKE IT EASY!!!!!!!

지금 내 수준으로 해결하지 못하는 과제가 당연히 있을 수 있다
누가 과제해라 빨리빨리 해라~ 말하면서 쫓아오는 것도 아니다
어랏! 요놈 자식 과제 미완성이군 아웃⛔🟥 이렇게 패널티가 있는 것도 아니다

그러니까 조급한 마음이 들 땐 숨 좀 돌리고,
스스로 당당할 만큼 최선을 다했다면 완성을 못 했다고 너무 자책하지 말자.

이제 스스로 괴롭히기 금지다

무지를 드러낼 용기가 필요하다

캠프 첫날부터 '나는 무지랭이입니다' 라고 입버릇처럼 말해왔다.

이는 '잘 모르니까 열심히 배우고 공부할게요. 많이 가르쳐 주세요.' 를 함축하는 말이고
무지를 드러내고 있다고 생각했는데

아니었다.

진정으로 무지를 드러내고 학습 의지를 보여주는 건 저런 단어로 자신을 소개하는 게 아니라
질문할 용기가 있는 것이었다.

지금까지 질문을 망설였던 이유는 '민폐를 끼치기 싫어서'라고 생각했는데
솔직한 마음은 무지를 드러낼 용기가 없어서였다는 것을 어제 깨달았다.

포스트맨 사용에 있어 어려움을 겪고 몇 시간을 끙끙 거리다 조심스레 운을 띄웠다.
"저를 기본이 안 되어 있는 멍청한 녀석이라고 생각하실지 모르겠지만, 이 부분 한 번만 도와주실래요?"

팀원분들은 모두 웃으며 아무도 그렇게 생각하지 않으니 편하게 질문하라고 하셨고,
가르쳐 주신 방법을 적용하자 혼자 몇 시간 끙끙 거렸던 문제가 단 몇 분 만에 해결되었다.

와! 드디어 해결했다는 환희와 함께 이런 생각이 들었다

아, 내가 방어 목적으로 밑밥을 깔았네?
아, 사람들이 나를 어떻게 볼지에 대한 두려움이 있었구나.
그래서 항상 말로는 '저는 무지랭이입니다~' 하고 다녔지만 정작 질문을 하지 않았던 거구나.

혼자 끙끙거릴 시간을 절반으로 줄이고,
무지를 드러낼 용기를 가지고 질문했다면 더 빨리 성장할 수 있었겠구나.

이 중요한 걸 4주 만에 깨달았지만,
4개월 후가 아니라 4주 만에 깨달아서 정말 다행이다.

앞으로 최선을 다해 고민하되, 혼자서 해결이 안 된다는 판단이 서면 그 즉시 질문하자.
아주 기본적인 부분이라도 부끄러워하지 말고 질문하자.

바보 탈출하려고 들어온 캠프니까 바보임을 당당하게 드러내자.

웅 마장


5주차 예고(ft. Spring)

사실 주특기 심화 주차(5주 차)까지는 개인 프로젝트를 진행할 줄 알았다.

협업할 때 민폐 안 끼치고 내 몫을 다 하려면 이번 주에 개인 공부 열심히 해야겠다! 생각했는데
웬걸 당장 이번 주부터 팀 프로젝트를 진행하게 되었다.

다행히 실력도 훌륭한데 마음까지 따뜻한 분들을 만나

포스트맨과 Git 활용법,

개발하기 전에 요구 사항을 잘게 쪼개서 
어떤 부분을 공부해야 하고 어떤 방법으로 구현해야 하는지 정리하고 issue 등록하기 등의 Tip,

마음가짐 & 멘탈 케어 등등 다방면으로 많은 도움을 받고 있다.

이번 프로젝트에서 게시글, 댓글, 대댓글 좋아요 기능을 맡아서 작업하고 있는데
현재 기본 기능은 구현이 되었다.
이제 코드 정리를 하고, 구체적인 요구사항을 충족시킬 수 있게 추가 작업을 해야겠다.

지금 스프링이랑 두 발 멀어진 상태인데, 세 발 가까워지는 한 주가 되었으면 좋겠다.

그리고 중요한 거! Take it easy용기 있게 질문하기 잊지 말고 실천하자🆗

profile
정성과 진심을 담아 흔적을 기록하자💡

0개의 댓글