본문 바로가기
728x90

분류 전체보기157

6) 개발 architecture (2) 헥사고날 아키텍처(Hexagonal Architecture) 1. 레이어드 아키텍처 개념 : 애플리케이션의 비즈니스 로직(도메인)과 외부 시스템을 철저히 분리2. 계층(Layer) 구조 1) 포트(Port) : 외부와 통신하기 위한 인터페이스 2) 어댑터(Adapter) : 포트를 구현하는 외부 기술 구체화(포트의 구현체이자, Controller 역할 수) 3) 핵심 도메인(Core Domain) : 순수 비즈니스 로직, 외부 의존 없음 (레이어드 아키텍처의 도메인과 동일) com.example ├─ user │ ├─ domain │ │ ├─ User.kt │ │ └─ UserDomainService.kt │ ├─ .. 2025. 8. 31.
6) 개발 architecture (1) 레이어드 아키텍처(Layered Architecture) 1. 레이어드 아키텍처 개념 : 레이어드 아키텍처는 전통적인 애플리케이션 구조로, 관심사의 분리 (Separation of Concerns)에 기반해 계층을 나누는 패턴. 2. 계층(Layer) 구조 1) Presentation Layer (Controller, UI) - 사용자의 요청을 받아서 응용 계층(비지니스 계층)에 전달 - DTO 변환, HTTP 응답 처리 2) Application Layer (Application Service) - (선택) - 비즈니스 흐름(Use Case) 조합 - 도메인 로직을 직접 가지지 않고 도메인 객체를 조립 및 조율 3) Domain Layer.. 2025. 8. 31.
5) 요구사항 분석 및 ERD 설계 1. 요구사항 분석현업에서 개발을 진행할 때 요구사항 분석 과정 없이 바로 개발부터 진행하는 주니어 개발자들이 눈에 많이 보입니다. 개발 이후 막히거나, 기획쪽 수정될 내용을 뒤늦게 찾게되면, 기존 개발했던 로직들을 전반적으로 수정해야해서 개발 시간을 더 달라는 개발자들이 있습니다. 그럴때 저는 반대로 질문합니다.요구사항 분석을 제대로 하셨나요?개발 전 요구사항에 명시되어 있는데요? 개발자 중 어떤 개발자는 질적으로도 속도적으로도 잘하는 개발자가 있는 방면, 어떤개발자는 코드 리뷰에도 수정될 부분이 많이 발생하고 개발시간도 느리게 개발하는 사람들이 있어요.그런데 그 중 원인을 분석해보면, 요구사항분석을 개발전에 진행했냐? 안했냐로 구분되기도 합니다.val 개발자에게_좋지_않은_습관 = "요구사항을 제대로.. 2025. 8. 31.
4) Spring @controller, @service, @repository 스프링은 기본적으로 레이어드 아키텍처(Layered Architecture)를 따르는데, 보통 다음 3단계로 나뉨 1. Controller(라우팅 역할) : “문 앞에서 손님을 맞이하는 안내원” 1) 클라이언트(웹/앱) 요청을 받고, 어떤 서비스가 필요할지 결정 2) 비즈니스 로직은 직접 하지 않고, Service로 위임import org.springframework.web.bind.annotation.*@RestController@RequestMapping("/users")class UserController( private val userService: UserService) { @PostMapping fun createUser(@RequestBody .. 2025. 8. 29.
3) Spring 컨테이너, Bean 1. "Spring 컨테이너"란?“Spring 컨테이너는 커피숍의 바리스타와 같다” 1) 커피숍에선 손님이 주문하면, 바리스타가 재료를 조합해서 커피를 만들어 줌 2) 바리스타는 커피를 만들기 위해서 커피 원두, 우유, 시럽 등 필요한 재료들을 잘 보관, 관리함 3) 바리스타가 모든 걸 직접 만들고, 관리하니 손님은 그냥 주문만 하면 됨 4) 즉, Spring 컨테이너는 객체(Bean)를 생성하고, 관리하며, 필요할 때 꺼내주는 "바리스타" 같은 존재2. Bean 이란?Bean은 커피숍에서 만드는 ‘커피’ 한 잔' 1) Bean은 "Spring 컨테이너"가 관리하는 "객체" 2) 직접 new 해서 만드는 게 아니라, Spring이 대신 만들.. 2025. 8. 26.
2) Spring Boot란? (맛보기) 1. Spring 이란? : Spring Framework는 자바 기반의 엔터프라이즈 애플리케이션 개발을 위한 핵심 프레임워크로, IoC(제어의 역전)와 DI(의존성 주입), AOP 등을 통해 유연하고 확장성 있는 애플리케이션 개발을 지원하는 기술 2. Spring Boot 란? - Spring Boot는 Spring Framework를 더 쉽게 사용할 수 있도록 만든 도구. - 설정을 최소화하고, 빠르게 실행 가능한 애플리케이션을 만들 수 있음. - 핵심 특징 1) 자동 설정(Auto Configuration): 의존성 기반 자동 Bean 등록 2) 내장 서버(Embedded Server): Tomcat/Jetty 등을 내장 → 별도.. 2025. 8. 25.
1. (2) Kotlin 주요 문법 1. 변수 선언 var name: String = "Bill" // 값 변경 가능val age: Int = 25 // 값 변경 불가능 (final)var nickname: String? = null - var: 가변 변수 - val: 불변 변수 (초기화 후 값 변경 불가 - ? = null: nullable 변수 선언 2. 형변환 val number: Int = 10val text: String = number.toString() - Kotlin은 명시적 형변환만 지원 (toInt(), toString() 등) 3. 함수 선언//일반함수fun sum(a: Int, b: Int): Int { return a + b}//단일 표현식 함수fun sum(a: I.. 2025. 8. 25.
1. Kotlin 이란? & (1) 주요 자료구조 1. Kotlin 이란? : Kotlin은 JetBrains에서 개발한 정적 타입 프로그래밍 언어로, JVM 위에서 실행되며 Java와 100% 상호 운용이 가능. 간결하고 안전하며 현대적인 프로그래밍 패러다임을 지원하도록 설계 1) 주요 특징 간결성Kotlin은 불필요한 코드를 줄이고, 표현력을 높여 개발자의 생산성을 향상시킴안전성Kotlin은 널(null) 안전성을 내장하여 런타임 오류를 방지함수형 프로그래밍 지원람다 식, 고차 함수, 불변 컬렉션 등 함수형 프로그래밍 개념을 포함상호 운용성Kotlin은 기존 Java 코드, 라이브러리, 프레임워크와 원활하게 통합 가능 2) 활용분야Android 애플리케이션 개발서버 사이드 애플리케이션데스크톱 및 웹 애플리케이션 자세한 내용은 .. 2025. 8. 24.
0. [과정을 들어가면서] 과정소개 1. 강의제작 배경 및 학습목표 1) 많은 주니어 개발자들이 CRUD와 같은 기본 기능은 익숙하지만, 언어의 핵심이 되는 자료구조, 실무에 필요한 패키지 구조 설계, 데이터 흐름 제어, 동시성 처리(DB Lock, Redis, Kafka 등과의 연계 활용) 등은 정확히 이해하지 못하는 경우가 많음 2) Java Spring 기반 개발자들에게 Kotlin은 가장 빠르게 적응할 수 있는 언어 임 (Spring 프레임워크 내에서 Kotlin만 적용하면 개발은 그대로 가능함) → 이제는 ‘어떻게 Kotlin답게 개발할 것인가?’에 집중해야 할 때! (OOP 중심의 Java에서 OOP + FP 지향의 Kotlin으로 자연스럽게.. 2025. 8. 24.
Redis 동작 원리 & data structure & Back up! 1. Redis 는 어떻게 동작할까? : Redis 핵심 서버 엔진은 단일 쓰레드, 논블로킹 이벤트 루프로 동작 ( 클라이언트 요청 → 이벤트 루프 → 명령 실행 → 응답 하는 구조임) - 이벤트 루프란? 1) 클라이언트가 요청을 보냄 → 소켓 이벤트 감지 2) 이벤트 루프가 해당 명령을 싱글 스레드에서 바로 실행 (대부분의 명령은 메모리 연산이므로 바로 처리 가능) 3) 처리 결과를 바로 클라이언트 소켓에 기록 (별도 스레드 없이도 논블로킹 소켓 사용 가능) 4) 이벤트 루프는 다음 이벤트(클라이언트 요청, 타이머, 내부 이벤트 등)로 넘어감 "이러한 구조때문에 rua script 를 최소화 해서 사용.. 2025. 8. 14.
mac os terraform 설치 //home brew 로 설치brew tap hashicorp/tap brew install hashicorp/tap/terraform//이미 설치된 경우 update 하기brew update brew upgrade hashicorp/tap/terraform//terraform 버전 확인terraform --version 2025. 7. 8.
[감정분석 논문 리뷰] AI 기반 온라인 리뷰 감정 분석 - User Guide for KOTE: Korean Online Comments Emotions Dataset 논문 리뷰 목적: MCP 를 이용하여 각각의 LLM(한글 지원 되는 Open AI, Gemini 등) 에 주가정보와 기업정보에 대해 리뷰 요청 및 그 결과에 대해 긍정과 부정에 대한 감정분석을 실시.이를 통해 두 집단(긍정, 부정)을 분류하기 위한 목적(긍정 시 매수, 부정 시 매수 보류) 논문 제목: User Guide for KOTE: Korean Online Comments Emotions Dataset 논문 URL: https://arxiv.org/abs/2205.05300 User Guide for KOTE: Korean Online Comments Emotions DatasetSentiment analysis that classifies data into positive or negativ.. 2025. 6. 8.
AI Tool List 코드 작성 최적화- github Copilot, https://github.com/copilot GitHub CopilotAI that builds with yougithub.com - Tabnine, https://www.tabnine.com/ Tabnine AI Code Assistant | private, personalized, protectedTabnine is the AI code assistant that accelerates and simplifies software development while keeping your code private, secure, and compliant.www.tabnine.com 버그 분석, 코드 리뷰 - DeepCode (Snyk), https://.. 2025. 6. 6.
주니어 개발자인데, 이대로 물경력이 계속될까봐 걱정 되시나요? 항해플러스 신청 가이드항해플러스 백엔드 8기도 어느덧 끝 무렵에 이르렀습니다. 항해플러스 백엔드 9기 모집 중에 있는데요.주니어 인데, "물경력"만 차는것 같고, 주변에 잘하는 시니어개발자가 없어, 답답함을 느끼고 있는 개발자들!신청하여, 발전적인 미들급 개발자로 "성장"했으면 합니다. "할인코드 공유" : ZrDOpO "수강료 결제"할 시 위의 코드 입력하면 할인받을 수 있습니다.- 30 만원 ! - (프론트, 백엔드, AI 모두 가능) https://hanghae99.spartacodingclub.kr/plus/be 항해 플러스, 도전을 넘어 개발자 커리어 도약으로백엔드 주니어 개발자로서 성장의 한계를 느끼고 있다면, 시니어 코치진과 함께 10주 몰입을 통해 도약하세요.hanghae99.spart.. 2025. 5. 29.
Kafka DLT 활용해서 재시도 처리 /w Spring Kafka 내에서는 message 처리에 실패한 message 를 저장하는 별도의 topic 이 있다.= DLT 처리 실패한 message 를 Kafka with spring 기능을 활용해서 자동 retry 를 설정할 수 있다. 이는 Transactional outout pattern 의 동작원리와는 다른 구성이다. DLT 의 경우 Kafka 자체의 message 전달 실패에만 사용이가능하다.하나의 예로, consumer 에서 토픽을 받자말자 error 를 return 하게 되면 kafka 는 이를 오류로 인식하고 message 전달의 실패로 간주하게 된다. 하지만 consumer 전달은 잘 받고 consumer 에 연결된 서비스 로직을 수행중에 오류가 나게되면, DLT 로 message 가 저장되지 않.. 2025. 5. 5.
현재 작업중인 변경사항을 새 브런치로 옮기는 방법! git switch -c feature/name 또는 (구버전 Git이면):git checkout -b feature/name 2025. 4. 29.
Java 버전 관리 brew install caskbrew install --cask temurin@21 brew install jenv 설치된 jenv 를 등록하기 위해 ~/.bashrc 또는 ~/.bash_profile 혹은 ~/.zshrc에 아래 내용을 추가한다.export PATH="$HOME/.jenv/bin:$PATH"eval "$(jenv init -)" 아래와 같이 직접 명령어를 수행해서 추가해도 된다.$ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrc$ echo 'eval "$(jenv init -)"' >> ~/.zshrc아래 명령어들도 차례로 수행한다. Enable the export plugin$ eval "$(jenv init -)"$ jenv e.. 2025. 4. 29.
[다음강의 미리보기] @testcontainers/redis @testcontainers/redis 를 이용한 redis test container 구성 https://testcontainers.com/modules/redis/?language=nodejs Testcontainers Redis ModuleStart testing with real dependencies using the Redis Module for Testcontainers fortestcontainers.com 통합테스트 작성 시, 분산락 등을 구현할 때 mock만을 참조하게 되면 제대로 된 테스트가 되지 않으며, redis 직접 참조 시 여러명이 동시에 테스트 코드를 돌리게 된다면, 결과에 영향을 미치게 된다.(실 환경도 마찮가지) 그렇게 때문에 테스트 컨테이너를 이용하여(테스트 시 컨테이너.. 2025. 4. 28.
CloudWatchClient로 CPUUtilization 메트릭 Data 가져오기 (feat. CPU 상태 확인) for Kafka Throttling implementation("software.amazon.awssdk:cloudwatch:2.25.30") import software.amazon.awssdk.services.cloudwatch.CloudWatchClientimport software.amazon.awssdk.services.cloudwatch.model.*@Componentclass CloudWatchMetricsService { private val cloudWatchClient: CloudWatchClient = CloudWatchClient.create() fun getCpuUtilization(instanceId: String): Double { val request = GetMetricStatistic.. 2025. 4. 26.
Resilience4j 기본 활용 시스템이 장애가 발생하는 상황에서도 탈력적으로 시스템을 버티게 만들어주는 라이브러리 [주요기능]1. Circuit Breaker : controller에서 이슈 시 일정 시간동안 호출 막기, 일정시간 경과 후 재시도, 괜찮으면 정상처리 2. Retry : 실패한 요청을 자동으로 재시도 3. Rate Limit : 초당 호출 수 제한(과도한 트래픽으로 부터 시스템 방어) 4. Bulkhead : 어떤 서비스가 과도하게 자원 차지 시 다른 서비스의 영향을 없앰(쓰레드 풀 격리) 5. TimeLimiter : 특정 작업이 오래 걸리 시 강제종료 기타- Reactive type 지원(mono, flux), WebFlux 환경에서도 구현 가능 2025. 4. 25.
728x90