전체 글 135

패스트캠퍼스 환급챌린지 49일차 미션 (3월 20일) : 10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring) 초격차 패키지 Online. 강의 후기

대댓글 기능을 모두 완성함으로써 댓글 기능 고도화 첫번째 과제를 완료할 수 있었다. 댓글과 대댓글의 경우, 아무래도 하나의 테이블에서 관리되기 때문에, 처음 구현할 때는 어떤 식으로 댓글 데이터를 만들어서 화면에 뿌려주면 되는지 쉽게 떠오르지 않을 수 있다. 강의에서는 이러한 부분을 고려하여, 테스트 코드를 함께 작성함으로써, 부모 댓글과 자식 댓글이 정해진 순서에 맞게 구성되도록 확인하는 과정을 가졌다. 전체적인 로직은 다음과 같은데, 최초에는 자식 댓글이 없는 부모 댓글을 Map 자료구조에 담아 리스트에 넣은 다음에, 이후 자식 댓글을 순회하면서, 각각에 해당하는 부모 댓글 Map의 Value에 자식 댓글을 추가하는 방식으로 해당 기능을 구현하였다. 이러한 방식은 단순히 1차 대댓글 기능 뿐만 아니라..

학습 후기 2024.03.20

패스트캠퍼스 환급챌린지 48일차 미션 (3월 19일) : 10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring) 초격차 패키지 Online. 강의 후기

대댓글 기능을 추가하는 내용의 댓글 기능 고도화 작업을 진행하였다. 모두 완성된 것은 아니지만, 기존에 작성한 도메인 및 Conroller, Service, DTO, Request, Response 소스코드에 변경이 필요한 부분을 수정하고, 각각에 따른 테스트 소스코드를 재작성하였다. 대댓글은 기본적으로 일반적인 댓글 하위에 추가되는 개념으로 관리된다. 즉, 부모 댓글이 존재하고, 그 하위에 자식 댓글을 작성할 수 있는 것인데, 이를 위해서 기존에 만들었던 댓글 도메인에 부모댓글ID 필드를 추가하는 방식을 사용하였다. 부모댓글ID가 없는 댓글은 제일 상위에 있는 댓글이고, 부모댓글ID가 있는 댓글은 그 하위에 있는 대댓글이라고 볼 수 있다. 대댓글 기능은 기존에 IT교육을 받을 때, 첫 프로젝트에서 도입..

학습 후기 2024.03.19

패스트캠퍼스 환급챌린지 47일차 미션 (3월 18일) : 10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring) 초격차 패키지 Online. 강의 후기

기존에 구현한 해시태그 기능을 고도화하는 작업을 진행하는 시간을 가졌다. 해시태그는 # 기호 뒤에 단어가 붙는 형태인데, 게시글을 작성할 때, 이전과 다르게 해시태그 입력창을 없애고, 본문에 직접 해시태그를 추가하면, 해당 해시태그를 따로 테이블에 저장하여 관리하는 방식이다. 이를 위해, 본문 내용을 파싱하는 메서드도 새롭게 추가하였다. 이렇게 파싱하는 작업은 정규표현식을 통해서 수행하는데, 정규식은 중간중간 구글링하여 사용해본 적은 있으나, 맨땅에서 작성할 수준은 아니기에, 이번 강의을 통해 정규표현식 관련하여 추가 학습을 해야겠다는 생각을 하였다. 아무래도 사용자의 자유도를 높여줄수록 해시태그를 파싱하는 부분을 섬세하게 구현하여야, 정상적인 단어만 해시태그로 분류될 수 있을 것이다. 조건문을 통해 파..

학습 후기 2024.03.18

패스트캠퍼스 환급챌린지 46일차 미션 (3월 17일) : 10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring) 초격차 패키지 Online. 강의 후기

게시판 서비스의 해시태그 기능을 개선하기 위해 직접 소스코드를 수정하며 서비스를 고도화하는 작업을 진행하였다. 게시글과 해시태그의 관계를 다대다로 가져가는 것까지는 ERD로 설계하였으나, 자바 소스를 통해 직접 수정하는 작업이 필요하였다. AS-IS 게시글 엔티티에는 단일 해시태그 필드가 있었지만, TO-BE 게시글 엔티티에는 해시태그를 HashSet에 담아서 여러개를 관리하고, 이를 ManyToMany 어노테이션을 통해, 해시태그 엔티티와의 관계를 맺어주는 수정이 필요하였다. 이러한 작업은 단순히 엔티티 수정에만 그치는 것이 아닌, Service, DTO, Response, Repository 등 수많은 소스코드에 영향을 미치는 것으로 확인되었다. 더구나 Test 코드도 모두 다시 작성해야 할만큼 영향..

학습 후기 2024.03.17

패스트캠퍼스 환급챌린지 45일차 미션 (3월 16일) : 10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring) 초격차 패키지 Online. 강의 후기

게시판 서비스 고도화 작업을 하는 과정에서 추가 도메인을 설계하는 부분을 진행할 수 있었다. 대댓글 기능 추가, 해시태그 개선 등 고도화 작업을 진행하는데 있어서 기존에 만들어둔 도메인에 변화가 생기기 때문에 고려할 부분이 다소 많이 생기게 되었다. 따라서, 이전에 작성한 ERD를 보면서 새롭게 작성하는 시간을 가졌는데, 대표적으로 가장 큰 변화는 게시글 테이블에 단일 필드로 존재하였던 해시태그를 없애고, 새로운 해시태그 테이블을 생성하여 그곳에서 관리하는 부분이다. 즉, 하나의 게시글에 어떤 해시태그가 포함되었는지 알기 위해서는, 게시글 테이블만 보아서는 안되고, 해시태그 테이블에도 접근하여 정보를 취합해야 하는 부분이 생겼다. 기획 단계에서의 설계를 살펴보면, 하나의 게시글은 여러개의 해시태그를 가질..

학습 후기 2024.03.16

패스트캠퍼스 환급챌린지 44일차 미션 (3월 15일) : 10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring) 초격차 패키지 Online. 강의 후기

이전 강의에서 게시판 서비스 기능을 전반적으로 완성하였고, 이후 기존에 만든 게시판 서비스를 고도화하는 프로젝트를 진행하게 되었다. 이번 강의에서는 본격적으로 프로젝트를 기획하는 단계에 돌입하였다. 어떤 부분을 고도화할지 기획 강의에서 다루게 되었는데, 크게 대댓글 기능, 해시태그 기능 개선, 카카오 로그인 기능, DB 마이그레이션, 기능 배포 결정과 취소, Hashicorp Vault 도입 등을 새로운 요구사항으로 정의하였다. 현재 회사에서 시스템 운영을 하고 있는 입장에서도 이러한 요구사항은 많이 마주치는데, 실제로 기존에 구축해놓은 시스템을 개선하기 위해 단순히 프로그램 소스코드를 변경하는 것뿐만 아니라, 새로운 솔루션을 도입하거나, 기술 스펙을 바꾸는 등의 다양한 형태의 서비스 고도화 작업을 종종..

학습 후기 2024.03.15

패스트캠퍼스 환급챌린지 43일차 미션 (3월 14일) : 10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring) 초격차 패키지 Online. 강의 후기

게시판 서비스 프로젝트를 모두 끝내고, 헤로쿠를 이용한 배포 및 깃헙 릴리즈까지 모두 마무리할 수 있었다. 이전에 다른 기관에서 IT 교육을 받거나, 다른 강의를 통해 학습하는 과정에서 게시판 CRUD 기능을 만드는 것은 많이 해보았기에, 그렇게까지 어렵지 않겠지 라고 생각하며, 학습을 하기 시작했다. 더구나 Java Spring은 현재 회사에서도 사용하고 있는 스택이기에, Spring Boot도 원리는 크게 다르지 않을 것이라는 생각에 빠르게 내용을 학습할 수 있을 것이라고 생각하였다. 강의를 모두 수강해본 결과, 이번 강의를 통해 Spring Boot 기반의 프로젝트를 큰 틀에서 진행하는 경험을 해보고, 실무적인 관점에서 나오는 노하우와 팁을 배우게 된 점은 유익했던 것 같다. 다만, Spring B..

학습 후기 2024.03.14

패스트캠퍼스 환급챌린지 42일차 미션 (3월 13일) : 10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring) 초격차 패키지 Online. 강의 후기

그동안 구현한 프로젝트를 깃헙에 릴리즈하고, 헤로쿠 배포를 위한 설정 작업을 하는 시간을 가졌다. Github은 소스코드를 올리고, 관리하는데 있어서 많이 써봤지만 Release 라는 기능은 그동안 제대로 사용해본 적이 없었다. 사실 하나의 프로젝트를 끝내면, 개발 과정에서 작성한 소스코드와 함께 프로젝트의 전반적인 내용을 정리한 Readme를 작성하여 올리는 것이 전부였는데, 이번 강의를 통해, 깃헙 릴리즈를 직접 사용해볼 수 있게 되었다. 이미 수많은 오픈소스 프로젝트를 보면, 릴리즈를 하고 있는데, 대표적으로 Spring 프로젝트를 보아도, 여러 버전에 따라 릴리즈된 것을 알 수 있다. 아무래도, 소프트웨어의 특성상 기능이 업데이트되거나, 크게 바뀌는 경우가 있을텐데, 그러한 변경된 점을 태그와 함..

학습 후기 2024.03.13

패스트캠퍼스 환급챌린지 41일차 미션 (3월 12일) : 10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring) 초격차 패키지 Online. 강의 후기

인증 기능을 최종적으로 마무리하는 부분을 진행하였다. Spring Security가 제공하는 다양한 기능 중, 패스워드 인코더를 이용하여, 사용자의 비밀번호를 암호화된 값으로 서버에 저장하도록 작업하였다. 본래 사용자의 패스워드와 같은 민감한 정보는 서버에 그대로 평문으로 저장하게 되면, 만약 예기치 못한 사고로 인해 데이터가 유출될 경우, 돌이킬 수 없는 손실로 이어질 수 있기 때문에, 만에 하나라도 유출되더라도, 그 손해를 최소화하기 위해 민감한 정보를 철저하게 암호화하여 값을 저장하는 것이 필요하다. 이러한 방안을 매번 수동으로 처리해주는 것은 번거롭기 때문에, Spring Security가 Password Encoder 라는 인터페이스를 제공해주고 있는데, 해당 인터페이스의 구현체를 이용하여, 사..

학습 후기 2024.03.12

패스트캠퍼스 환급챌린지 40일차 미션 (3월 11일) : 10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring) 초격차 패키지 Online. 강의 후기

웹 어플리케이션에서 유저의 인증, 권한 부분을 처리하는 인증 기능 구현을 진행하는 시간을 가졌다. Spring Security가 제공해주는 기능을 기반으로 구현을 하였는데, 기존에 Spring Security에 대해 깊이 있게 학습해본 적이 없었기에, 강의의 흐름을 따라가는데만 만족하고, 추후에 따로 공부를 해야겠다는 생각을 하였다. 소스코드 상으로는 구현이 되지만, 어떠한 원리로 인증 기능이 작동하는지는 알 수 없는 상황이었다. 당연히 강의의 취지상, 해당 원리를 자세히 설명해주기는 어려웠기에, Spring Security를 한번도 경험해보지 못한 사람들에게는 꽤나 어렵게 느껴질 수 있을 것 같다. 그래서 나도 이번 강의를 수강한 후, Spring Security에 관한 부분을 추가로 찾아서 학습하는 ..

학습 후기 2024.03.11