Blog

A collection of 92 posts
대용량 데이터 등록
blog

대용량 데이터 등록

들어가며  현재 진행하는 프로젝트는 monolithic에 sql mapping으로 구성되어 있습니다. 그래서 .xml에 있는 sql을 파싱(Parsing)하고 메타데이터(MetaData)로 만들어서 저장하는 기능이 필요했습니다.  하지만 문제가 있었습니다. mysql에 물리적으로 입력되는 메타데이터의 로우(row)만 한 개 프로젝트에 5만개가 넘어가는 상황이라 클라우드(Cloud) 환경에서 등록시간이 10분이나 소요되는 것이었습니다. 심지어 추후 분석할 프로젝트에
27 min read
JavaParser
blog

JavaParser

목차 1. 들어가며 2. Parser 3. JavaParser 기능 4. 라이브러리를 사용하며 겪은 문제 및 해결 들어가며 Modular Monolithic 아키텍처 프로젝트에서 메소드 호출 관계를 추출하는 업무를 맡으며 JavaParser를 처음 사용하게 되었습니다. 메소드 호출 관계를 추출하기 위해서는 각 메소드를 식별할 수 있는 식별자가 우선으로 필요했습니다. 메소드 시그니처를 식별자로 설정하고, 메소드 시그니처를 추론하는
19 min read
클린 코드의 기초
blog

클린 코드의 기초

들어가며 좋은 코드란 무엇일까요? 이제 막 개발자로써 첫발을 내딛은 초심자부터 오랫동안 몸담아온 베테랑까지, 좋은 코드를 향한 열망과 고민은 개발자로 존재하는 이상 결코 멈출 수 없는 숙명이 아닐까 합니다. 세상 만사가 그렇듯이 코드 역시 무언가의 '좋음'을 판단하는 기준은 시기와 상황, 혹은 따르는 방법론에 따라 다양하게 정의될 것입니다. 하지만
15 min read
상태 관리 라이브러리 Zustand
blog

상태 관리 라이브러리 Zustand

Zustand는 상태 관리 라이브러리 중 하나로, 작은 패키지 크기와 직관적인 사용법 덕분에 Redux와 Mobx와 더불어 많은 개발자들로부터 선택받고 있습니다. Zustand는 일반적으로 위의 예시 코드처럼 사용합니다. 개발자가 할 일은 State의 타입을 선언하고, create 함수의 파라미터에 함수 형태로 state의 초기값과 state를 변경하는 함수를 선언하는 것뿐입니다. Zustand는 이 코드만으로 자동으로 state를 생성하고 state가
11 min read
React Query
blog

React Query

1. React Query란 React Query는 데이터 Fetching, Caching, 동기화, 서버 데이터 업데이트 등을 쉽게 만들어 주는 라이브러리입니다. React에서 상태를 관리하기 위해 MobX, Redux 등 여러 라이브러리가 존재하지만, 현재 진행중인 프로젝트에서 접하게 된 React Query에 대해 간단히 알아보고자 합니다. 2. React Query의 장점 * MobX나 Redux를 사용하다 보면 BoilerPlate 형태의 코드가 많이
13 min read
리액트 퍼블리셔 가이드 3-1편 - CSS 소개
blog

리액트 퍼블리셔 가이드 3-1편 - CSS 소개

들어가는글 안녕하세요. 이 글은 퍼블리셔 초심자 분들을 위한 가이드입니다. 해당 글이 도움이 되길 바랍니다. 이번 글은 CSS를 주제로 CSS에 대한 내용만 집중적으로 이야기하려고 합니다. 더불어 이전 내용을 읽어보지 않은 초심자라면 리액트 퍼블리셔 가이드 이전 편을 먼저 읽어보시고 오길 권장드립니다. 목차 목차는 이렇습니다. CSS는 3개의 글로 나뉘어 포스팅 됩니다. 1번째 글은
9 min read
자바스크립트 엔진
blog

자바스크립트 엔진

자바스크립트는 웹 브라우저에서 가장 많이 사용되는 프로그래밍 언어입니다. 자바스크립트 코드를 실행하여 웹 페이지의 동적인 기능을 제공하는 인터프리터가 바로 자바스크립트 엔진입니다. 자바스크립트 엔진에는 크롬의 V8, 사파리의 Webkit, 파이어폭스의 Spider Monkey 등이 있습니다. 오늘 글에서는 개발자가 가장 많이 사용하고 있는 구글 크롬의 V8을 기준으로 자바스크립트 엔진 구성과 동작 원리를 설명합니다. 메모리 관리
8 min read
리액트 퍼블리셔 가이드 2편 - HTML
blog

리액트 퍼블리셔 가이드 2편 - HTML

들어가는 글 안녕하세요. 이 글은 퍼블리셔 초심자 분들을 위한 가이드입니다. 해당 글이 도움이 되길 바랍니다. 이번 글은 HTML을 주제로 HTML에 대한 내용만 집중적으로 이야기하려고 합니다. 더불어 이전 내용을 읽어보지 않은 초심자라면 리액트 퍼블리셔 가이드 이전 편을 먼저 읽어보시고 오길 권장드립니다. 목차 목차는 이렇습니다. HTML 소개부터 시작해, HTML에 대한 자세한 내용을
23 min read
MonoRepo & Yarn Berry
blog

MonoRepo & Yarn Berry

0. 개요 * 최근 들어 프론트엔드 프로젝트 형상관리에서 고전적 소프트웨어 개발 방식인 모놀리식 애플리케이션(Monolithic)의 한계점이 나오면서 다른 방식들이 많이 나오고 있다. * 해당 글은, 소스 형상 관리 시스템 상에서 소스 레파지토리를 관리하는 방법에 대한 전반적인 내용과 최근 트렌드로 자리 잡혀가고 있는 MonoRepo 에 관한 설명과 관련 툴(yarn berry)을
18 min read
Git basic
blog

Git basic

Git 이란 무엇일까? 도서관에서 책을 대여하기 위해선 어떻게 해야하는가? 도서관을 이용해본 적이 없더라도 조금만 고민을 해본다면 쉽게 대답할 수 있을 것이다. 여기 넥스트리 도서관이 있다. 넥스트리 도서관에는 방대한 양의 책들이 존재한다 이 중에서 나는 한 권의 책을 골라 대여를 하고 싶다. 그러기 위해선 먼저 도서관을 방문해야 한다. 어떤 책을 읽을지
27 min read
Code Splitting
blog

Code Splitting

1. 개요 코드 스플리팅은 왜 적용해야 할까요? 리액트와 같은 SPA로 개발된 프로젝트를 빌드해 보면 하나의 JS파일로 번들링되는 것을 볼 수 있습니다. 이렇게 하나의 파일로 번들링된 결과물로 배포된 웹페이지에 진입하면 사용자는 처음 진입 시 모든 페이지에 대한 정보를 불러오게 되고, 이는 초기 로딩을 느리게 만들어 사용자 경험을 나쁘게 합니다. 위와 같은
11 min read
리액트 퍼블리셔 가이드 1편 - 웹 퍼블리셔란? 리액트 퍼블리셔 로드맵
blog

리액트 퍼블리셔 가이드 1편 - 웹 퍼블리셔란? 리액트 퍼블리셔 로드맵

시작 안녕하세요. 이 글은 퍼블리셔 초심자 분들을 위한 가이드입니다. 해당 글은 로드맵에 관련된 글로 전체 맥락을 파악하기 위해 자세하거나 세세한 글은 어느정도 생략이 되었습니다. 리액트 퍼블리셔는 어떤 과정을 통해 될 수 있는 것인지 대략적인 과정을 나타낸 글입니다. 이 글이 도움이 될 수 있길 바라며, 행복한 코딩 하세요! 목차 목차는 이렇습니다.
23 min read
리액트 렌더링 및 최적화
blog

리액트 렌더링 및 최적화

요약 이 글을 요약하면 다음과 같다. 1. props의 변화로 인해 렌더링이 이루어지는 것이 아니라, 렌더링이 이루어진 후 props의 변화를 가지고 화면을 그린다. 따라서 렌더링 추적 및 최적화는 철저히 state기반으로 이루어져야 한다. 2. 컴포넌트를 구성할 때 React의 Reconciliation을 고려해야 한다. 3. React.memo와 useMemo, useCallback, useTransition 등을 통해 불필요한 렌더링을 막을
23 min read
Mockito를 활용하여 테스트 코드 작성하기
blog

Mockito를 활용하여 테스트 코드 작성하기

Mockito 란? Mockito란 Java 오픈소스 테스트 프레임워크입니다. Mockito를 사용하면 실제 객체를 모방한 가짜 객체, Mock 객체 생성이 가능해집니다. 개발자는 이 Mock 객체를 통해 테스트를 보다 간단하고 통일성있게 구현할 수 있습니다. 그렇다면 Mockito가 필요한 순간은 언제일까요? 물론 작성한 프로그램을 테스트할 때일 것입니다. 그런데, 우리가 지금까지 만들어본 다양한 프로그램들을 떠올려봅시다. 간단한 연산만을
10 min read
React 디자인 패턴
blog

React 디자인 패턴

디자인 패턴이란 프로그램을 개발하는 과정에서 사용되는 설계 패턴들을 정의한 것입니다. 과거의 웹사이트와 비교했을 때 현재는 화면 작업이 훨씬 복잡해졌고 React, Vue와 같은 개발 프레임워크를 활용하여 컴포넌트 단위로 웹 페이지를 개발하고 있습니다. 더욱 효율적인 웹사이트 구축이나 유지 보수를 위해 컴포넌트의 단위의 활용이 중요하게 되었는데, 이에 컴포넌트를 어떻게 구성할 것인가에 대한 고민이
13 min read
Module Federation
blog

Module Federation

작년 초에 Module Federation을 적용한 작은 서비스를 개발했습니다. 이 글은 그때의 경험을 바탕으로 Module Federation를 사용하는 이유, 단점, 사용하며 느낀 점 등을 다룹니다. 1. Micro-Frontend and MSA Micro-Frontend MSA(Microservice Architecture)는 이제 Backend에서 친숙한 단어입니다. MSA는 여러 개의 작은 서비스를 모아 하나의 앱을 구현하는 방식입니다. 작은 단위로 유지되는 각각의
11 min read
스프링 대용량 트래픽 처리
blog

스프링 대용량 트래픽 처리

#0. 대용량 트래픽 처리의 필요성 * 웹 서비스를 다루는데 있어 트래픽을 처리하는 구조를 설계하고 적용하는 것은 개발자의 필수 역량이다. 특히 서비스의 규모가 커질 수록 개발자가 의도한 대로 프로그램이 작동하지 않는 경우가 발생한다. 아무리 뛰어난 성능을 가진 서버라고 해도 모든 트래픽을 감당할 수는 없으므로 서비스의 안정적인 구동과 만족도 높은 고객 경험을 제공하기
14 min read
Front-end 에서의 Testing
blog

Front-end 에서의 Testing

I. 신입 개발자의 일상 시작하기에 앞서 아직 프론트가 낯선 입사 1년이 막 지난 한 사원의 프론트엔드 개발 흐름을 살펴보자. 1. figma 등을 통해 본인이 맡은 페이지의 모습을 확인한다. 2. 퍼블리셔 분이 만들어주신 컴포넌트를 일단 복붙하고 시작한다. 3. 나름 관심사에 따라 한 페이지를 몇 개의 컴포넌트로 나눈다. 4. 다시 각각을 container와
11 min read
TypeScript 알차게 활용하기
blog

TypeScript 알차게 활용하기

TypeScript 알차게 활용하기 들어가며 최근 통합 테스트 과정을 거치면서 TypeScript를 잘 활용할수록 에러 발생률을 줄일 수 있음을 체감하였다. 그래서 TypeScript 활용 팁을 정리해보았는데, 이번 글에서는 Utility Types와 Enums의 활용 방법을 살펴보고자 한다. Utility Type으로 간편하게 타입 정의하기 TypeScript는 다양한 Utility Type을 제공하고 있는데, 이를 사용하면 좀 더 간편하게 타입을 정의할
9 min read
2023 웹디자인 트렌드
blog

2023 웹디자인 트렌드

시작 안녕하세요 2023년이 된지 일주일이 조금 지난 지금, 디자인계의 트렌드는 계속 발전되고 변화되고 있습니다. 어느 분야든 마찬가지겠지만, 트렌드를 알고 시장을 이해하는 것이 중요합니다. 2023년의 웹디자인은 어떤 트렌드가 자리잡고 있을까요? 목차 먼저 목차를 보겠습니다. 첫 번째로 2023 웹디자인 트렌드에 대해서 보고 두 번째로 2년전인 2021년과 2023년의 트렌드가 어떠한 차이가 있었는지 비교해보도록
18 min read
Typescript compile process
blog

Typescript compile process

목차 * 개요 * Typescript 특징 * Typescript Compile Process * Typescript를 선택하는 이유 개요 타입스크립트가 등장하기 전 많은 프로젝트에 자바스크립트를 사용했습니다. 자바스크립트의 동적 타이핑은 자바와 다르게 개발자가 아주 유연한 코딩을 할 수 있도록 했지만, 프로젝트가 거대해 지면서 점점 디버깅에 취약하고 가독성이 낮으며 객체 지향을 추구하는 프로젝트에 걸맞지 않는 문제점이 야기되었습니다. 1년간 자바스크립트 기반의
13 min read
Generic 이해하기
blog

Generic 이해하기

주제 선정 이유 개발을 하다보면 이미 작성된 코드를 분석해야할 상황에 자주 놓이게 됩니다. 가장 쉽게 이런 상황에 놓이는 경우는 보통 라이브러리를 사용해야 할 때 일 것입니다. 라이브러리에서 원하는 기능의 API를 찾아 사용하기 위해서는 매개변수와 반환값의 타입을 참조하여 대략적으로나마 어떤 기능을 위해 만들어진것인지, 어떻게 사용해야 하는지 힌트를 얻는 과정이 필요하였습니다. 이
15 min read