본문 바로가기

분류 전체보기53

[회고] 2024년을 돌아보며.. 24년에 있었던 일들을 기록하며1. DND 프로젝트 수행 (24.01 ~ 24.02)새해가 시작되면서 IT 연합동아리 DND에 참여했습니다. 저는 백엔드 개발자이자 팀장 역할을 맡아, 프로젝트 피드백 수집 플랫폼 ‘Sendback’을 개발했습니다. 처음으로 팀장을 맡아보니, 팀원들을 리드하거나 회의를 이끄는 방식이 미숙해 아쉬움이 많이 남습니다. 그럼에도 좋은 팀원들과 함께 프로젝트를 끝까지 완성해낼 수 있었습니다.처음 IT 연합동아리에 참여하면서 느낀 점은, PM(프로젝트 매니저)의 역할이 정말 중요하다는 것입니다. 기획만 전문적으로 담당해주는 역할이 있으면 프로젝트의 완성도와 체계가 훨씬 높아진다는 걸 깨달았습니다. 그래도 연합동아리를 통해, 개발 초기의 재미와 열정을 다시금 느낄 수 있어서 무척 좋.. 2024. 12. 27.
[Project] TDD 개발 시 given의 코드 양 줄이기 (Fixture, Persister) + @spy 활용 서론:IT연합동아리 DND에서 진행한 프로젝트를 하며 느낀 점입니다. TDD로 개발을 진행하게 되면서 메인 코드 뿐만 아니라 테스트 코드도 코드임을 느꼈습니다. 어떻게하면 테스트 코드의 양을 줄일 수 있고, 테스트를 편하게 작성할 수 있는지에 대한 고민이 담겨있습니다. 본론으로 들어가기 전에 저의 프로젝트는 Controller, Service, Repository 모든 계층의 테스트가 given-when-then 패턴을 사용하는 단위테스트로 이루어져있음을 알립니다! Fixture처음에는 given에 머릿속으로 흘러가는 로직을 모두 다 넣으면서 개발을 했었습니다. 하지만 연관 관계가 많은 엔티티를 마주하자 제가 사용하던 로직은 좋은 코드가 아님을 깨달았습니다. 제가 쓴 코드들을 쓱 보다가 문뜩 "모든 계층.. 2024. 6. 8.
[OS] 운영체제란? 서론오늘날 많은 사람들이 컴퓨터를 사용하게 되면서 운영체제에 대한 정확한 뜻은 모르지만 ‘나 windows 써~’, ‘난 mac써~’라는 식으로 자주 언급이 되었다. 친근하지만 설명하라고하면 입이 선뜻 떨어지지 않기에 정확히 알아보기로 했다.운영체제의 정의는?사용자와 컴퓨타 하드웨어 사이에서 중계 역할을 하면서, 프로그램의 실행을 관리하고 제어하는 시스템 소프트웨어.혹은컴퓨터가 켜질 때 메모리에 적재되어 모든 프로그램의 실행을 제어하고 사용자의 요청을 처리해주는 소프트웨어 라고 칭한다. 운영체제의 본질적 속성1. 운영체제는 모든 컴퓨터 자원(resource)을 관리한다.자원이란?하드웨어 자원 - CPU, 캐시나 메모리, 키보드 등소프트웨어 자원 - 응용프로그램들데이터 자원 - 파일, 데이터베이스 등2. .. 2024. 4. 30.
[Project] 실시간 채팅 구현 시 FCM Token 발송 여부 결정하기 서론 tincle 앱 1:1 대화 기능을 개발 중, 대화방에 모두 들어와있을 경우에 메세지 전송을 하게 된다면 FCM Token을 발송하지 않고, 한 명만 들어와있을 경우에는 FCM Token을 발송하는 로직을 구현해야 했습니다. 프론트 쪽에서 대화방에 들어와 있을 경우 인앱 알림을 끄는 방안도 있었으나, 백엔드에서 처리하는 방법이 없을까? 고민을 하다가 이 방안이 괜찮은 것 같아서 백엔드에서 처리하기로 했습니다. socket, stomp 사전 설정 WebSocketConfig @Configuration @EnableWebSocketMessageBroker @RequiredArgsConstructor public class WebSocketConfig implements WebSocketMessageBr.. 2024. 3. 25.
[Project] Spring + Stomp 테스트 하는 과정.. (실시간 채팅 구현) 서론 tincle이라는 친구 기반 SNS 서비스를 개발하는 도중, 1:1 채팅 즉 DM같은 기능을 개발하게 되었습니다. 그 과정에서 소켓과 Stomp를 도입하게 되어서 테스트를 하려고 알아보던 중.... 난관에 대해 소개하려합니다. 해당 글은 소켓이 무엇인지, Stomp가 무엇인지가 아닌 테스트하는 방법에 대해 서술합니다.  테스트 과정 전 필자의 설정 저의 webSocket 설정은 다음과 같습니다. WebConfig@Configuration@EnableWebSocketMessageBroker@RequiredArgsConstructorpublic class WebSocketConfig implements WebSocketMessageBrokerConfigurer { private final Stom.. 2024. 2. 27.
[Project] 멀티 모듈을 왜 쓸까? (멀티 모듈 도입 전) 서론 IT 연합동아리 DND에 참가하게 되어서 새로운 사이드 프로젝트를 진행하게 되었습니다. 백엔드는 2명으로 이루어져 있는데, 소통을 하다보니 자연스럽게 이번 프로젝트에 대해 고민하게 되었습니다. 이번 프로젝트로 얻어가는 것으로 두가지 주제가 있었는데 하나는 멀티 모듈, 나머지 하나는 TDD 였습니다 ! 이번 글에서는 멀티 모듈에 대해 얘기해 보려고 합니다. 모듈은 무엇인가? Oracle Java 문서에서 모듈이란 패키지의 한단계 위의 집합체이며, 관련된 패키지와 리소스의 재사용할 수 있는 그룹이라고 정의하고 있습니다. 이때 각 모듈은 독립적으로 개발, 빌드, 테스트, 배포가 가능합니다. 멀티 모듈 멀티 모듈 프로젝트는 상호 연결된 여러 개의 모듈로 구성된 프로젝트를 의미합니다. 즉 멀티 모듈 단일 프.. 2024. 1. 15.