분류 전체보기
-
[Code Review] 코드 리뷰 경험 공유 및 리뷰하는 이유code review 2024. 12. 28. 02:06
이 글은 제가 지금까지 코드리뷰를 하거나 받으면서 느낀 점과, 그 과정에서 얻게 된 배움과 생각을 공유하기 위해 작성한 글 이다. 나의 첫 코드리뷰는 약 2년 전에 우아한 테크 코스 프리코스를 진행하면서의 스터디였다. 그땐 뭣 모르던 시절로 코드리뷰를 받기만 하였고,, 다른 사람의 코드를 보고 피드백을 줄 정도의 역량은 없었습니다. 처음 코드리뷰를 받았을때 내 코드를 소개 하면서 발표를 하였다. 그땐 나의 밑바닥? 완전 벌거 벗은 것 마냥 다 보여주는 느낌이라 부끄럽기만 하였다. (지금 생각해보면 부끄럽다고 숨기는게 아니라 성장을 위해 당당하게 받으면서 공부를 했어야 했다.) 그리고 다른 사람들의 코드를 보면서 좋은 점은 카피를 하였고 그때 객체지향 프로그래밍(OOP)에 대해서 어느정도 느낌을 받았다...
-
[객체지향] 객체지향 코드로 리팩토링 - starcraft console game 1탄 (게임 소개 및 코드 소개)객체지향 설계 2024. 12. 27. 17:47
이 글은 리팩토링 과정과 객체지향적 설계에 대한 고민을 공유하기 위해 작성된 글이다.제가 이전에 작성했던 간단한 스타크래프트 콘솔 게임 코드를 대상으로, 객체지향 원칙에 맞춰 더 확장성과 유연성을 갖춘 코드로 리팩토링하려는 과정을 소개할겁니다. GitHub 주소이다. https://github.com/hyeonjaez/object-oriented-practice 문제 소개 - 스타크래프트 https://github.com/hyeonjaez/object-oriented-practice/blob/main/SOLUTION.md 스타크래프트 주제로 한 게임 이다. 이 문제의 핵심은!마지막에 이것이다. 이 말은 즉,변화에 유연하고, 유지보수가 용이한 구조를 설계 하여 객체지향 적이게 코드를 작성하라는 것이다. ..
-
[DOSI:RAK] “DOSI:RAK 서비스 개발 : Spring EventListener로 객체지향 설계 문제 해결하기”개발 ing 2024. 12. 16. 23:37
해당 글은 피우다 프로젝트 공모전 DOSI:RAK 서비스를 만들면서 했던 내용이다 이번 공모전 프로젝트를 하면서 맡은 기능중에 Green Commit 이라는 기능이 있다. 이 기능은 사용자가 Green Track 이나 Green Auth를 이용하면 사용자가 어떤 것을 했는지 기록해주는 것이다. GitHub의 잔디(GitHub Contributions)와 유사하다. 이 기능을 개발하면서 처음에는 Track 기능에서 Create (등록) api 가 호출되고 완료가 되면 기록하는 식으로Track service class의 track create 관련 메서드에 Track create 관련 로직과 사용자 활동 create 관련 로직을 단순하게 넣었다. 하지만 여기서 의문이 들었다. 이렇게 한다고 하면 Aut..
-
[SSAFY] SSAFY 12기에서 가장 많이 들었던 질문: 프론트엔드와 백엔드의 Validation, 둘 다 필요한가?SSAFY 2024. 12. 12. 00:55
나는 이번엔 SSAFY 12기 참여하여 활동하면서동료들이 나한테 질문 했던 것 중에 제일 많이 했고 제일 중요하다고 느낀 부분에 대해서 작성한 글이다 SSAFY에서 웹 백엔드와 프론트엔드를 배우면서 동료들이 했던 질문은 바로!입력값을 받고 나서 입력값 validation을 프론트엔드와 백엔드에서 둘다 굳이 해줘야 하냐? 둘중에 한곳에서만 해주면 안되냐? 이런 질문이다 항상 이런 질문 들으면 나의 답변은 둘다 해줘야 한다였다 더 정확하게 말을 하자면 프론트 엔드, 백엔드에서 두 곳의 입력값 검증을 하는 이유가 다르고, 각각 어떤 검증을 해야하고 검증의 역할이 다르기 때문 이다 이제 이 글에서는 왜 프론트엔드와 백엔드 모두에서 입력값 검증을 해야 하는가? 라는 거에 대해 구체적으로 살펴볼것이다1. 프..
-
[Backend] application.properties, application.yml 보안 관리와 협업 효율성 높이기개발 ing 2024. 12. 10. 17:29
해당 글은 피우다 프로젝트 공모전 DOSI:RAK 서비스를 만들면서 했던 내용이다 나는 여러가지 프로젝트를 하면서 의문이 들었던 문제점 이 있었다 그건 바로! appcliation.properties 나 application.yml 파일에 있는 민감한 정보즉, 데이터베이스 아이디, 비밀번호 등을 어떻게 할것인가? 이다 이 문제점은 당연하게 혼자 프로젝트하면 상관이 없다 하지만 github에 협업을 하고 포트폴리오나 그런 것 때문에 repository를 private이 아닌 public으로 수정함으로써 문제가 되는 부분이다 작자는 My-books라는 프로젝트에서는이런 민감한 정보들을 nhn cloud secure key manager를 통해 암호화 하여 처리 했지만 nhn cloud 서비스가 아닌 걸로..
-
[Solitour] 비용과 성능의 트레이드오프개발 ing 2024. 10. 13. 21:01
프로젝트 개발 하면서 고민사항에 대한 글이다 https://www.solitourist.com Solitour - 새로운 나를 찾는 여행Solitour(솔리투어)는 사용자들이 여행한 정보를 기록하고 공유하여 정보나 팁 같은 것들을 이미지와 함께 제공하거나, 사용자들이 모임 기간, 모임 마감일, 성별, 나이, 장소, 참여 인원 등을 설정www.solitourist.com 전에 고민 했던 점이랑 이어지는 고민 이다 https://hyeonni.tistory.com/90 [Solitour] 성능 vs. 코드 가독성의 갈림길프로젝트 개발 하면서 고민사항에 대한 글이다 https://www.solitourist.com/ Solitour - 새로운 나를 찾는 여행Solitour(솔리투어)는 사용자들이 여행한 정보..
-
[네트워크] 로드 밸런싱네트워크 2024. 10. 13. 20:22
로드 밸런싱 이란 기술을 소개 할건데 우선 이 로드 밸런싱을 이해하기 위해서 이게 왜 등장하게 되었는지 알아야 한다 지금은 it 산업의 시대이다 인터넷이 발달함으로써 데이터 통신이 활발해졌다그로 인해서 네트워크 트래픽이 엄청나게 증가 하게 되었다 그래서 아무리 성능이 좋은 서버를 갖추고 있다고 하더라도 이렇게 늘어난 트래픽을 감당하기 어려워졌다이런 점으로 인해 서버를 추가로 설치하고 여러 서버에 동일한 데이터를 저장하여 수많은 트래픽을 효과적으로 분산 처리 한다하지만 단순하게 이렇게 분산 처리하면 데이터의 일관성이 맞을까? 라는 답변을 놓게 된다 이에 필요한 기술이 로드 밸런싱이라는 기술이다 이렇게 데이터 일관성 문제라고 하면 감이 안올것 이다 작자도 그랬다 좀 더 깊게 보면 여러 서버에서 동일한 ..
-
[Spring JPA] JPA N+1 문제Spring JPA 2024. 10. 13. 20:07
N + 1 문제는 하나의 쿼리를 통해 데이터를 조회할 때, 연관된 엔티티들을 지연 로딩(Lazy Loading) 또는 즉시 로딩(Eager Loading)으로 추가 조회하면서, 의도하지 않은 N개의 추가 쿼리가 실행되는 현상을 의미한다. 언제 발생할까? JPA Repository를 사용하여 엔티티 조회 메서드를 호출할 때, 주로 SELECT(READ) 쿼리에서 발생합니다. 누가 발생 시킬까? 1 대 다(1:N) 또는 다 대 1(N:1) 연관 관계를 가진 엔티티를 조회할 때 발생합니다.주로 Fetch 전략에 의해 발생합니다. 특히 EAGER와 LAZY 로딩 전략에 따라 다르게 발생합니다. 어떤 상황에서 발생할까? 1. EAGER Fetch 전략을 사용하여 데이터를 조회하는 경우:연관된 엔티티를 즉시 조회..