_

Always be tactful

iamdefinitelyabackenddeveloper 6

05. 현대 소프트웨어 아키텍처에 대한 고찰

싱글톤 패턴의 출현설계를 하다 보면, 애플리케이션 전반에 걸쳐 유일하게 존재해야 하는 객체가 있다. 싱글톤 패턴은 불필요한 리소스 낭비를 방지할 뿐 아니라, 관리를 용이하게 한다는 점에서 한때 각광받던 디자인 패턴 중 하나다. 어디서든 쉽게 접근해서 쓸 수 있다는 점도 개발자들에게 충분히 매력적으로 느껴졌을 것이다. 마치 전역 변수처럼 편의성을 제공하면서도 최소한의 객체 지향 원칙을 지키는 듯 보였으니 말이다. 하지만 싱글톤 패턴의 가장 고질적인 문제는 강한 결합에 있었다. 싱글톤에 의존하는 클래스들은 싱글톤의 존재를 직접적으로 알게 되고, 이는 곧 테스트를 매우 어렵게 만든다는 말과 같다. 싱글톤의 상태가 전역적으로 공유되기 때문에, 예측 불가능한 사이드 이펙트가 발생하기 쉬웠으며, 병렬 처리 환경에서..

MAIN/IMDEF 2025.07.26

04. Spring Initializr & Dependencies

Spring Initializr는 스프링 프로젝트를 생성할 때 유용한 웹페이지다. 간단한 게시판 기능을 만들기 위해 의존성을 몇 가지 추가하였는데, 어떤 의존성들을 추가했으며 왜 추가했는지 알아보자.Spring WebSpring Web은 RESTful 애플리케이션을 구축하고 Spring MVC를 사용하여 웹 애플리케이션을 개발하는 데 필요한 핵심 기능을 제공한다. 기본적으로 내장된 Tomcat 서버를 포함하고 있어 별도의 웹 서버 설정 없이 바로 실행 가능하다. 가장 먼저 개발할 Comment API는 사용자의 요청(댓글 등록, 댓글 조회 등)을 처리하고 응답(JSON 데이터)을 반환하는 웹 애플리케이션이다. Spring Web은 이러한 웹 요청을 처리하고, 컨트롤러를 통해 비즈니스 로직을 연결하며, 뷰..

MAIN/IMDEF 2025.07.25

03. 이미지, 도커 파일, 도커 컴포즈란 무엇인가

일반적으로 개발이나 DevOps 맥락에서 '이미지'라고 함은 거의 대부분 '도커 이미지'를 의미한다. (가상 머신 이미지, 디스크 이미지 같은 다른 종류의 이미지도 있긴 함). 아무튼 이미지라는 표현은 도커가 제공하는 환경의 일관성, 재현성, 경량성이라는 핵심 가치를 직관적으로 전달하기 위해 쓴다고 보면 되는데, 무슨 말인지 이해하기 어려우니 풀어서 이야기해 보자. 이미지라는 단어는 시각적인 스냅샷을 연상시킨다. 특정 시점의 파일 시스템과 설정 상태를 그대로 찍어낸 사진이라고 생각하자. 예를 들어 MySQL 도커 이미지라고 할 때, 특정 MySQL 버전과 그 실행에 필요한 모든 파일 및 설정이 고정된 상태로 패키징 된 스냅샷인 것이다. 특정 프로그램을 실행하는 데 필요한 모든 것을 담고 있는 읽기 전용 ..

MAIN/IMDEF 2025.07.24

02. 개인 프로젝트인데 도커 왜 써?

일단 MySQL은 가장 보편적인 데이터베이스다. 그리고 운영체제에 맞춰 직접 설치해 사용하면 된다. 그럼에도 불구하고 도커를 사용하는 이유는, 그만큼 시스템 환경에 종속되어 다른 개발자와 동일한 환경을 맞추기 어렵기 때문이다. ..라고 지금까지는 얘기해 왔다. 그런데 한 가지 따져볼 게 있다. 그저 평범한 개인 프로젝트에 불과한데, 타 개발자와 공유할 일이 있을까? 있긴 한가? 없다면 왜 쓰지? 사실 도커를 사용하는 이유는 단순히 다른 개발자가 나와 환경을 맞추기 위해서가 아니다. 도커는 오직 나 혼자 개발하더라도, 내가 편하기 위해서 채택하는 것이다. 그리고 그 이유는 환경 관리에 있다. 만약 A 프로젝트는 MySQL 8.0이 필요한데, B 프로젝트는 MySQL 5.7이 필요하다면?만약 C 프로젝트도 ..

MAIN/IMDEF 2025.07.23

01. 간단한 기획 후, API 명세를 작성해 보자

일단 만들고, 필요에 의해 개선하자. 무턱대고 정답에 가까운 방법을 엿들어 개발하는 일은 없도록 하자. 이번엔 간단한 웹 사이트를 하나 개발할 생각이다. 내가 작성한 게시물이 하나 있고, 그 게시물에는 여러 사람이 댓글을 남길 수 있도록 만들 것이다. 고려해야 할 사항은 다음과 같다. 게시물은 나(어드민)만 작성하고 수정할 수 있어야 한다.게시물에는 여러 사람이 작성한 댓글들을 순차적으로 보여준다. 논리구조상 게시물이 먼저 구현되어야 할 것 같은데, 게시물 작성 및 수정에는 특수한 조건이 필요하므로 댓글 기능 먼저 구현하기로 하였다. 댓글 기능에도 사실 추가하고 싶은 게 몇 가지 있지만 일단은 익명으로 누구나 작성할 수 있도록 개발해야겠다. API 명세부터 작성해 보았다. 혼자 진행하는 프로젝트라 꼭 선..

MAIN/IMDEF 2025.07.22

00. 지난 8개월에 대한 회고

어느덧 개발을 시작한 지 8개월이 지났다.백엔드 개발자가 되기로 마음을 먹었음에도, 지난 8개월을 돌이켜 보면 잘 산 건지 모르겠다. 분명 바쁘게는 산 것 같은데, 기존 학업과 병행하느라 유독 지치고 방황했던 시간들이었다.공부를 시작한 지 한 달이 되었을 때, 을 1회독하고 참가한 데이터 분석 프로젝트에서는 팀장을 맡아 전체적인 기획과 데이터 전처리, 시각화를 담당했다. 성과는 좋았으나 백엔드 개발자의 방향성과는 전혀 맞지 않는 경험이었다.그래도 덕분에 좋은 사람들을 만날 수 있었다. 충남연구원에 재직 중인 분께서 다른 팀이었음에도 유독 나에 대한 격려와 칭찬을 많이 해주셨는데, 그때 받았던 따스함이 오늘날까지도 기억에 남는다. 프로젝트가 끝나고, 술 한 잔 사주시면서 언제든 부르라고 하셨는데 실제로 연..

MAIN/IMDEF 2025.07.21