전체 글

✉️ seohui.duck.jo@gmail.com
· React
React를 처음 접하는 개발자라면, 함수형 컴포넌트와 클래스형 컴포넌트의 차이, 그리고 상태 관리 방식에 대한 고민이 많을 것입니다.과거에는 React에서 상태(state)를 관리하려면 클래스형 컴포넌트를 사용해야 했습니다. 하지만 코드가 길어지고, 재사용성이 떨어지는 문제가 있었습니다. 이를 해결하기 위해 React Hook이 등장하였으며, 함수형 컴포넌트에서도 상태 관리와 생명주기 메서드의 역할을 수행할 수 있도록 도와줍니다. React Hook이 필요한 이유더 간결한 코드: 클래스형 컴포넌트보다 코드가 직관적이고 짧아짐가독성과 유지보수성 향상: 관심사 분리가 쉬워지고, 재사용성이 증가부수 효과 관리가 용이: useEffect를 활용하여 사이드 이펙트 관리를 쉽게 수행 가능백엔드 개발자의 입장에서 ..
· 레퍼런스
엔지니어링 매니저로서 팀원들의 승진을 돕고, 처음으로 개발자로 입사할 기회를 제공하는 것은 큰 보람입니다. 물론, 끝없는 회의가 그 보상인 것은 아니지만요. 반면, 팀에서 누군가를 내보내야 하는 불편한 순간도 경험했습니다. 어렵게 첫 개발자 직무를 얻었지만, 얼마 지나지 않아 해고된 주니어 개발자들과 이야기를 나눈 적도 있습니다. 이번 글에서는 사람들이 해고되는 가장 흔한 두 가지 이유와 이를 피하는 방법에 대해 살펴보겠습니다. 대부분의 경우, 당신의 잘못이 아닙니다아무리 좋은 코드를 작성하고 기대치를 충족하더라도 해고될 수 있습니다. 안정적인 직장은 존재하지 않습니다.구조조정, 무능한 관리자, 회사 합병, 심지어 사무실을 파괴하는 소행성(?) 같은 변수도 있습니다. 이러한 상황을 완전히 피할 수는 없지..
· React
React로 단일 페이지 애플리케이션(SPA)을 개발하고 Spring Boot를 통해 배포하는 과정에서, 사용자들이 특정 페이지로 이동한 후 새로고침을 하면 404 오류가 발생하는 경우가 있습니다. 이는 React와 Spring Boot가 라우팅을 처리하는 방식의 차이에서 비롯된 문제로, 많은 개발자가 마주하는 흔한 이슈입니다. 이번 포스팅에서는 문제의 원인을 분석하고, 이를 효과적으로 해결하는 방법을 상세히 설명하겠습니다. 문제 상황: 새로고침 시 404 오류 발생  React 애플리케이션에서 BrowserRouter를 사용하여 클라이언트 사이드 라우팅(Client-Side Routing)을 처리할 때, 새로고침 시 다음과 같은 404 오류가 발생할 수 있습니다.GET https://example.co..
· 레퍼런스
지연 시간 (Latency)지연 시간은 클라이언트에서 서버로 요청이 전달되고 다시 돌아오기까지(혹은 하나의 작업 단위가 완료되기까지) 걸리는 시간을 말합니다. 보통 밀리초(ms) 단위로 측정됩니다.웹페이지 로드: 만약 서버가 브라우저로 페이지 데이터를 보내는 데 200ms가 걸린다면, 지연 시간은 200ms입니다.간단히 말해, 웹사이트가 빠르게 로드되면 낮은 지연 시간(low latency)을 가진 것이고, 느리게 로드되면 높은 지연 시간(high latency)을 가진 겁니다.왕복 시간(Round Trip Time, RTT): 요청이 서버로 가고 응답이 다시 돌아오는 데 걸리는 전체 시간을 말합니다. 때로는 RTT가 지연 시간의 대체 용어로 사용되기도 합니다. 처리량 (Throughput)처리량은 시스..
Kafka Streams는 실시간 데이터 처리를 위한 강력한 도구로, KStream과 KTable이라는 두 가지 데이터 구조를 제공합니다. 이번 글에서는 이 두 데이터 구조의 개념과 차이를 살펴보고, 실제 KStream-KStream, KStream-KTable, KTable-KTable 조인의 예제를 설명하겠습니다. KStreams - KStreams 조인[개념] KStream-KStream 조인은 두 개의 실시간 데이터 스트림을 결합합니다.이 조인은 타임 윈도우를 기준으로 이루어지며, 설정된 기간 내에 동일한 키를 가진 데이터를 결합합니다. [조인의 특징]타임 윈도우가 필수적입니다.데이터가 실시간으로 들어오므로, 시간이 지나면 윈도우가 닫히고 더 이상 데이터를 결합할 수 없습니다.[사용 사례]두 개의..
Kafka Streams는 Apache Kafka에서 제공하는 분산 스트리밍 처리 애플리케이션 라이브러리입니다. 이 라이브러리는 대규모 데이터 스트림을 실시간으로 처리하며 데이터 분석, 변환, 집계 같은 작업을 손쉽게 구현할 수 있도록 설계되었습니다. 이번 글에서는 Kafka Streams의 핵심 개념과 작동 방식을 초보자도 이해할 수 있도록 간단히 설명하겠습니다. Kafka Streams란 무엇인가?Kafka Streams는 실시간 스트리밍 데이터 처리를 위한 Apache Kafka의 클라이언트 라이브러리입니다.복잡한 분산 시스템의 세부사항을 개발자가 직접 관리하지 않아도, 간단한 코드를 통해 실시간 데이터를 처리하고 분석할 수 있게 돕습니다. Kafka Streams는 데이터의 필터링, 변환, 집계 ..
· 레퍼런스
소프트웨어 개발에는 법칙이나 원칙으로 알려진 다양한 가이드라인과 관찰 결과가 존재합니다. 이들은 모든 상황에 보편적으로 적용되는 엄격한 공식은 아니지만, 개발 과정을 크게 좌우하는 중요한 프레임워크를 제공합니다. 이러한 원칙은 조직, 팀, 그리고 개인의 생산성에 상당한 영향을 미칠 수 있기 때문에 소프트웨어와 관련된 모든 사람이 이를 숙지하는 것이 유용합니다. 브룩스의 법칙 (Brook's Law)“늦어진 소프트웨어 프로젝트에 인력을 추가하면 더 늦어진다.” - Fred Brooks 조정 비용(coordination cost) 때문에 프로젝트에 더 많은 개발자를 투입한다고 해서 생산성이 항상 증가하는 것은 아닙니다. 이 법칙은 지연된 프로젝트에 계획 없이 추가 인력을 투입하는 것의 위험성을 강조합니다. ..
Redis는 Java 애플리케이션에서 캐싱, 세션 관리, 실시간 데이터 저장소로 자주 사용됩니다. Redis 클라이언트에서 데이터를 저장하거나 가져올 때, 데이터는 반드시 직렬화되어야 합니다. 직렬화 방식은 성능과 코드의 유지보수에 큰 영향을 미치기 때문에 잘 선택해야 합니다. 이번 포스팅에서는 Java에서 Redis 직렬화 시 자주 사용하는 방법들을 비교하고 각 방식의 특징과 예제를 설명합니다. JdkSerializationRedisSerializerJDK 기본 직렬화는 Java 표준 라이브러리에서 제공하는 java.io.Serializable 인터페이스를 사용하여 객체를 바이트 스트림으로 변환하는 방식입니다. 이 방식은 사용하기 편리하지만, 다소 무거운 오버헤드가 있을 수 있습니다.  장점:Java ..
알림과 실시간 채팅 같은 서비스를 구현할 때, 우리는 자연스럽게 두 가지 기술 사이에서 고민에 빠지게 됩니다. SSE와 WebSocket은 각기 다른 매력을 지닌 두 명의 주인공과 같습니다. 이 포스팅에서는 SSE와 WebSocket의 특징과 사용법을 비교해 보면서, ‘내 프로젝트에서는 어떤 녀석이 주인공일까?’에 대한 답을 찾아보도록 하겠습니다. 실시간 통신의 필요성여러분의 앱이 최신 주식 가격을 보여주거나 "우리 동네에 눈이 내립니다!" 같은 알림을 띄워야 한다면, 실시간 통신은 선택이 아니라 필수입니다. 그런데 문제는 단방향이냐, 양방향이냐! 양방향 통신을 택하면 더 복잡하지만 매력적이고, 단방향 통신은 더 기능이 적지만 그만큼 단순합니다. 둘 중 어느 쪽을 고를지 결정하기 위해선 기술들의 성격을 ..
· 레퍼런스
많은 사람들이 ChatGPT의 잠재력을 보았지만, 이 도구를 어떻게 활용할지 잘 모르는 경우가 많습니다. 이 포스팅에서는 ChatGPT를 8가지 시나리오에 따라 활용하는 방법을 소개합니다. 먼저 ChatGPT가 무엇인지 간략하게 알아봅시다. ChatGPT란 무엇인가?ChatGPT는 챗봇입니다. 이메일 작성, 에세이 작성, 코드 작성 등 다양한 작업을 도와줄 수 있는 강력한 도구입니다. 어쩌면 ChatGPT가 미래에 여러분의 가장 친한 친구가 될지도 모릅니다. 이 모델은 원래 GPT-3.5를 기반으로 개발되었으며, 대화에 특화된 학습을 거쳤습니다. 이후 GPT-4가 출시되면서 ChatGPT도 이 최신 모델을 사용하게 되었습니다. 처음에는 이 챗봇이 텍스트 입력만 받았지만, 이제는 시각적 입력도 지원합니다...
둘기덕
덕토피아