목록Tech (92)
우당탕탕
최근에 주변에서 개발을 시작하려는 지인분들이 많아 Git과 Github에 대해 가이드를 적어보려 한다. Git과 Github에 대해 간략하게 설명하고 Git 이란? Git은 분산 버전 관리 시스템(DVCS)로, 개발자들이 소스코드의 변경 사항을 추적하고 협업할 수 있도록 도와주는 도구이다. 여러 개발자들이 서로 다른 브랜치에서 작업을 진행하고, 작업한 부분을 병합하는 것까지 원활하게 지원해 준다. GitHub이란? GitHub은 Git을 기반으로 하는 원격 저장소 호스팅 서비스로, 개발자들이 프로젝트를 공유하고 협업할 수 있는 온라인 플랫폼이다. 코드 리뷰와 이슈 트래킹, 프로젝트 관리 등의 부가 기능 또한 제공한다. 따라 해보기 1. Git 설치 Git 공식 홈페이지(https://git-scm.com..
오늘은 최근 지인들에게 많은 질문을 받고 있는 성능 최적화와 스케일링 전략에 대해 적어보려고 한다.성능 최적화와 스케일링은 백엔드 개발에서 핵심적인 요소이다. 서비스의 성공 여부와 직결되는 이슈이기 때문에 꾸준한 최적화와 효율적인 스케일링 전략은 선택이 아닌 필수이다.성능 최적화 전략 1. 캐싱 캐싱이란 반복적으로 사용되는 데이터나 계산 결과를 메모리에 저장하여 빠르게 액세스 할 수 있도록 하는 기법이다.데이터베이스에 접근하는 데 시간이 많이 걸리는 작업일 경우, 캐싱을 사용하여 빈번하게 사용되는 데이터를 빠르게 가져올 수 있다. 예시로 Redis와 같은 인메모리 캐시 솔루션을 활용하여 조회 속도를 크게 향상 시킬 수 있다.캐싱의 종류로는 아래와 같다. 1-1. 지역캐싱 (Local Caching) 지..
마이크로서비스 아키텍처(MSA)는 작고 독립적인 서비스들의 집합으로 구성된 애플리케이션 구조이다 이번 포스팅에서는 마이크로서비스 아키텍처(Microservice Architecture)와 모놀리식 아키텍처(Monolithic Architecture)의 장단점을 비교하고, 각각 어떤 상황에서 각각이 적합한지에 대해 알아보겠다. 모놀리식 아키텍처 (Monolithic Architecture) 모놀리식 아키텍처는 전통적인 개발 방식으로 하나의 프로젝트에 모든 기능을 함께 포함한다. 이렇게 하면 코드 베이스가 커질수록 개발 및 배포에 복잡성이 증가한다. 아래는 모놀리식 아키텍처의 예시이다. 모놀리식 아키텍처의 경우 위의 그림과 같이 모듈단위로 쪼개는 것이 아닌 하나의 프로젝트로 전체 애플리케이션을 묶어서 개발하..
ControllerAdvice와 ExceptionHandler에 대해 @ExceptionHandler란? @ExceptionHandler란 Bean에서 발생하는 예외를 잡아 하나의 메서드에서 처리해주는 어노테이션이다. ExceptionHandler 어노테이션에 설정한 예외가 발생한다면 해당 handler가 작동하며 어노테이션 옆에 value 값을 줘서 캐치할 예외를 설정해 줄 수 있다. ( 여러 예외를 한 곳에 넣을 수도 있다 ) 해당 내용은 아래의 코드를 통해 확인해보자 @RestController public class ExceptionController { // 한개만 설정할 경우 @ExceptionHandler(NullPointerException.class) public String allExc..
IoC와 DI란? 스프링을 사용하면 IoC와 DI라는 단어를 많이 듣게 된다. IoC와 DI는 뭘까?? IoC(Inversion of Control)란? IoC란 영어 그대로 제어의 역전이라 부른다. 제어의 역전이란 메서드나 객체의 호출 작업을 개발자가 아닌 스프링에게 제어권을 넘기는 것을 말한다. 이전까지는 개발자가 객체의 생성을 관리하며 제어했지만, 스프링을 사용하게 되면 스프링 컨테이너에게 제어권을 넘겨 스프링 컨테이너가 흐름을 제어하게 된다. DI(Dependency Injection)란? DI란 의존성 주입이라 부르며, 객체를 직접 생성하는 게 아닌 외부(IOC 컨테이너)에서 생성한 후 주입시켜주는 방식이다. 의존성 주입 방식으로는 3가지 방법이 존재한다 생성자 주입 ( Constructor I..
플러터란? 대학생 시절 나는 GDSC(Google Developer Student Club) 동아리 활동을 진행하면서 플러터에 대해 알게 되었다. 플러터를 사용해서 앱개발도 진행했었고 현재 출시한 앱 산타의 경우도 초기버전의 경우 완전한 네이티브로 구현했었다. ( 현재는 플러터 웹뷰 ) 초기버전 : https://github.com/Kimbeomchul/HikingMobileApp Flutter란? 플러터는 구글에서 개발한 오픈소스 크로스 플랫폼 GUI 애플리케이션 프레임워크이다. Mobile World Congress 2018에 베타버전을 발표하면서 새롭게 소개된 프레임워크이다. ( 나같은경우에는 2019년에 처음 사용했으니 거의 나오자마자 썼다.. ) 플러터의 특징으로는 크로스플랫폼(Cross-Pla..
