전체 글 22

[회고] 전공에 대하여

이번에 저는 제가 왜 현재 백엔드를 전공하고 공부하고 있는지 돌아보게 되었습니다 저는 학기 초 전공에 대해 많은 고민을 했습니다이때 선택하는 전공에 따라 취업하기 까지 공부하는 내용도 달라지고취업하는 분야도 달라진다고 생각했기에 조금 신중하게 선택하려 했습니다그렇기에 다양한 선배들한테 물어보기도 했습니다이렇게 선배들의 전공을 탐색해보며 FE와 BE중 고민하다가BE를 선택하게 되었습니다 BE가 취업이 더 잘된다고 듣기도 했고웹과 앱에 모두 BE가 필요하다는것을 듣고 결정적으로 선택했었습니다사실 간지나서 한게 가장 컸습니다.. 백엔드로 어느정도 전공을 선택하고 난 후에는 백엔드 선배를 찾아갔습니다샤워하고 나왔는데 제 방문 앞에 태은선배가 와있으셨습니다.. 백엔드에 대해서 좀 듣기도 하고강의도 추천 받고 기초..

회고 2025.12.30

[회고] PR(Pull Request)에 대하여

최근 HCBC나 GSMC, 아이디어 페스티벌 등다양한 프로젝트를 하게 되어 PR을 올리는 일이 잦아졌습니다팀원들과 협업하며 프로젝트를 진행하다 보니저의 PR에 대해 다시 생각해보게 되었습니다.나의 첫 PR위 사진은 제가 두달전 올린 HCBC의 PR 입니다지금 보니 PR 템플릿도 없어서 PR이 굉장히 못생겼습니다...또한 Label, Assignees도 설정하지 않았었습니다심지어 머지 대상 브랜치를 master로 설정하고 PR을 올리는 미친 짓거리도 했습니다심지어 Approve의 개념도 없이 그냥 머지를 때리며 개발했습니다..나의 두번째 프로젝트많은 부분을 담당하는 것은 아니지만 저에게도 두번째 프로젝트이자첫번째 대형 프로젝트가 찾아오게 되었습니다충격적이게도 많이 개선된게 보입니다..!!하지만 이건 처음에..

회고 2025.12.10

[BackEnd] 코드리뷰의 중요성

경험최근 프로젝트를 하며 코드리뷰 절차가 충분히 준수되지 않아서프론트엔드 팀원이 저를 고발한 사건이 있었습니다.이전에 저는 코드리뷰의 중요성을 느끼지 못하고"아 문제없으면 머지해~~"라는 마인드를 가지고 있었습니다.하지만 이번 사건으로 인해 코드리뷰의 중요성을 일부분 깨닫게 되었고코드를 신중하게 작성하고 코드리뷰에 최선을 다하는 자세를 가지게 되었습니다.또한 코드리뷰의 중요성을 실무 차원에서 느껴보기 위해 더 조사해봤습니다. 코드리뷰 왜 함?버그를 초기에 발견 가능잘못된 비즈니스 로직이나 보안 취약점 등을코드리뷰를 주고받는 시점에서 효과적으로 처리할 수 있습니다.배포하고 나서 문제 생기면 고치는 것보다 처음부터 잡는 게 여러모로 유리합니다.코드 균일화파일 구조나 네이밍 규칙같이프로젝트의 전반적인 컨벤션과..

BackEnd 2025.11.26

[Data Structure] 그래프

그래프란그래프(Graph): 정점(Vertex, 노드)과 간선(Edge)으로 이루어진 자료구조.정점들 사이의 관계(연결 여부, 방향, 거리 등)를 표현하는 데 사용된다.그래프 용어정점(Vertex): 그래프를 구성하는 기본 단위. 노드라고 부르기도 한다.간선(Edge): 두 정점을 연결하는 선. 관계/연결을 표현한다.인접(Adjacent): 두 정점이 간선으로 직접 연결되어 있을 때 두 정점이 인접한다고 한다.차수(Degree): 정점에 연결된 간선의 수.무방향 그래프에서는 한 정점에 붙어 있는 간선 개수.방향 그래프에서는 진입 차수(in-degree), 진출 차수(out-degree)를 나누어 말하기도 한다.경로(Path): 한 정점에서 다른 정점으로 이동할 때 거치는 정점들의 순서.단순 경로(Simp..

Data Structure 2025.10.29

[Data Structure] 트리

트리란트리(Tree): 계층 구조(hierarchical)를 표현하는 비선형 자료구조. 노드(Node)들이 간선(Edge)으로 연결되어 있고, 사이클이 없다.루트 노드(Root): 트리의 가장 위에 있는 노드. 부모가 없다.부모/자식 관계: 어떤 노드 기준 한 단계 위를 부모, 한 단계 아래를 자식이라고 한다.서브트리(Subtree): 어떤 노드를 루트로 하는 “작은 트리”. 트리 안에 포함된 부분 트리.트리는 그래프의 특수한 형태: 사이클이 없고, 연결된 그래프의 한 종류로 볼 수 있다.왜 트리임?뒤집어 놓은 나무 모양: 위에 루트(뿌리), 아래로 잎(리프)이 퍼져 나가는 구조라서 트리라고 부른다.계층 구조 표현에 적합: 조직도, 디렉터리 구조, 상속 관계처럼 “위–아래” 관계를 자연스럽게 표현할 수 ..

Data Structure 2025.10.29

[BackEnd] 우리가 Spring으로 백엔드를 시작하는 이유

Spring이란?대부분 알고 있을 테니 간단하게만 하겠습니다 : )우선 Spring이란 객체지향 언어인 자바를 기반으로 한서버나 백엔드를 쉽게 만들게 해주는프레임워크 (framework)입니다. DI나 IoC 같은 핵심 개념이 있고Spring boot나 Spring security, Spring MVC 등의 기술을사용할 수 있습니다. 왜 이걸로 처음 배울까?저희 학교 이외에도 백엔드 개발을 처음 접하면서Spring을 많이 사용할 것입니다.그렇다면 다른 언어 기반의 프레임워크도 많은데왜 대부분 Spring framework로 시작할까요?그 이유는 다음과 같습니다.실무에서 많이 쓰이기 때문에한국이나 글로벌 엔터프라이즈에서사실상 백엔드의 표준형이 Spring이기 때문입니다.기업이나 기관마다 다른 기술을 사용하..

BackEnd 2025.10.01

[BackEnd]클린 아키텍쳐가 뭐임?

클린 아키텍쳐의 탄생클린 아키텍쳐란 Robert C. Martin라는 개발자 아저씨가 만든소프트웨어 설계 원칙입니다.이 개발자 아저씨는 기존에 개발을 하면서 프레임워크나 라이브러리 변경 시에 비즈니스 로직까지 영향을 받아서유지보수가 어려워지거나DB나 웹에 너무 강하게 결합된 비즈니스 로직이 생기고,코드가 확장될수록 기능을 추가하거나 변경할 때코드 복잡도가 미친 수준이 되는 문제점을 발견했습니다. 그래서 이러한 문제점을 해결하기 위해서비즈니스 규칙을 프레임워크 / 인프라와 독립시키고의존성은 추상화를 통해 제어하며테스트가 쉽고 간편한 클린 아키텍쳐라는구조를 만들게 되었습니다.(책과 강연 등으로 클린 아키텍쳐를 홍보하고 다니기도 했다고 하네요) 클린 아키텍쳐의 개념클린 아키텍쳐는 소프트웨어를 계층으로 나누고의..

BackEnd 2025.09.17

[Spring] Servlet과 DispatacherServlet

ServletServlet은 Java를 이용해서 HTTP 요청을 처리하고응답을 생성하는 서버 측 프로그램 입니다.javax.servlet.http.HttpServlet 클래스를 상속받아 구현하게 되고Tomcat과 같은 웹 서버 위에서 작동합니다.Spring에서도 이 Servlet 개념을 기반으로 하고 있습니다.그중 DisPatcherServlet이 Spring MVC의 핵심 Servlet이라고 할수 있습니다. 즉, 서블릿은 웹 애플리케이션에서 클라이언트의 요청을 받아서처리한 후에 응답을 생성하는 입구와 같은 역할을 합니다. DispatcherServletDispatcherServlet은 Spring MVC에서 정말 핵심적인 존재입니다.스프링 프레임워크의 웹 MVC 아키텍처에서 요청을 중앙에서 처리하고알맞..

Spring 2025.08.01

[Spring] Spring Filter란?

Spring Filter우선 Spring Filter는 javax.servlet.Filter 인터페이스를 구현한 클래스 입니다.HTTP 요청이 DispatcherServlet에 도달하기 전이나응답이 사용자에게 반환되기 전에 동작하는 클래스 입니다.쉽게 말해웹 애플리케이션에서 모든 요청이나 응답이 지나가는 '중간 관문' 말 그대로중간에서 무언가를 걸려주는 '필터' 의 역할을 합니다.이 필터는 클라이언트가 보낸 요청이 본격적으로 처리되기 전이나응답이 클라이언트에게 가기 전에 먼저 검사하거나 조작할 수 있는 것입니다.Spring Filter는 위 그림과 같은 흐름으로 작동합니다. 예를 들어서 사용자가 /board 주소로 요청을 보냈다면이 요청이 메서드를 호출하는 컨트롤러로 가게 되는데,컨트롤러에 가기 전에 필..

Spring 2025.08.01

[BackEnd] 객체지향 설계의 SOLID 원칙

SOLID란?SOLID는 객체지향 프로그래밍에서 코드를 유지보수하기 쉽고, 확장 가능하며,이해하기 쉽게 작성 할 수 있게 만든 SRP, OCP, LSP, ISP, DIP 이 다섯가지 원칙의앞글자를 따서 약자 SOLID라고 부릅니다.이 원칙은 클래스 설계와 코드 구조를 더 유연하고 깔끔하게 할 수 있게 해줍니다.각 원칙 이 무슨 원칙인지 알아보겠습니다. 1. S - SRP첫 번쨰 원칙은 SRP입니다.SRP는 Single Responsibility Principle(단일 책임 원칙)의 약자입니다.이 원칙의 정의는 "클래스는 오직 하나의 책임만 가져야 한다." 입니다.여기서 책임이란 변경 이유 정도로만 생각해도 괜찮을 거 같습니다.이 원칙은 하나의 클래스는 하나의 기능 또는 역할만 담당해야 한다. 즉해당 기능..

BackEnd 2025.07.22