전체 글71 『F-Lab』 2주차 멘토링 회고 시간 참 빠른 것 같다. 2번째 멘토링을 진행했다.3달간의 프로젝트를 마무리하고 장비를 반출하니 자투리 시간이 생겨서 멘토링 회고와 일주일 간 있었던 일에 대해 공유해보려 한다. 최근에 2~3달간? Frontend 업무를 90% 가까이 진행하다가, 성과를 인정받아서 평소 해보고 싶었던 채용 도메인 프로젝트에 참여하게 되었다. 장비를 반출하면서 커리어에 대해 떠올려봤는데 참 다사다난한 것 같다. 커리어 변천사GoLang -> Frontend -> Java 이야... 한국에서 Java를 사용하지 않고 지금까지 잘 밥 벌어먹고 있었다. 본론으로 돌아와, 두 번째 진행한 멘토링을 회고해 보자. 멘토링 진행 순서는 다음과 같았다.기술 질문 (자바의 신 1권)꼬리 질문 및 심화 질문스프링 관련 질문스레드, 멀티.. 2025. 2. 10. 『F-Lab』 1주차 멘토링 회고 F-Lab 멘토링 1주 차 회고 겸, 소방수 역할로 들어간 프로젝트에서 꽤? 선방을 했기에 여유가 생겨 오랜만에 글을 작성하려 한다.에이스라서 많은 견제를 받지만 어림없지.. 본론으로 돌아와, 처음 진행한 멘토링을 회고해보려 한다. 멘토링의 진행 순서는 다음과 같았다.멘티 현재 배경 파악멘티 이력서 검토사전에 준비해 간 질문에 대한 내용기술 질문 (자바의 신 1권)기술 질문 꼬리 질문 (자바의 신 1권)다음 멘토링 시간까지 학습해 올 분량 및 앞으로의 계획설날 연휴로 인해 사전 미팅을 별도로 갖지 않았기에 멘토링을 진행함에 앞서 현재 나의 배경을 우선적으로 공유했다. 대략 1년 7개월 정도의 SI 경력과 현재 회사에 재직 중이며, Go 개발자에서 Java 개발자로 전환을 시도한다는 이야기를 우선적으로 했.. 2025. 2. 5. 『Spring Cloud』 리전에 따라 경로에 차이가 생기면 어떻게 해결할까? 잠깐 도와주러 들어간 프로젝트에서 한국 리전에서만 서비스를 운영하다가 VM 생성과 관련된 특정 기능은 미국 리전에서도 동시에 운영하고 싶다는 요구를 들었다. 기존 API Gateway를 통해 라우팅 되는 방식은 /vms/..., /lb/..., /os/... 이런 식으로 서비스 기준으로 설정했다. 프론트엔드에서 VM 생성 관련 기능에만 prefix를 붙여서 요청을 보내기에는 공수가 꽤 클 걸로 예상을 했고, 이에 따라 모든 기능에 대해 공통된 prefix를 붙여서 요청을 보내면 Gateway 기능을 통해 경로를 재작성해 라우팅 하는 방법을 선택했다. 핵심은 아래와 같다./vms 및 /sas/vms 경로를 각각 다른 포트(서버)로 라우팅 한다.여러 리전에서 제공하지 않는 /sas/lb, /sas/os 기능.. 2025. 1. 27. 『Spring Boot』 선언적 트랜잭션(Declarative Transaction) 선언적 트랜잭션 (Declarative Transaction)에 대해 알아보기 전에 트랜잭션과 비교를 한번 해보자. 선언적 트랜잭션 설정 파일이나 어노테이션을 통해 코드에 트랜잭션 로직을 직접 작성하지 않고 선언적으로 트랜잭션을 처리하는 방식. 트랜잭션 Java 코드 내에서 트랜잭션 관리 객체를 직접 사용하여 트랜잭션 시작, 커밋, 롤백을 명시적으로 관리하는 방식. 간단하게 말하자면 선언적 트랜잭션을 사용하면 PlatformTransactionManager와 TransactionTemplate을 사용하여 코드로 트랜잭션을 제어하는 귀찮은 작업을 하지 않아도 된다. 물론 복잡한 트랜잭션 제어가 필요한 상황이라면 @Transactional 어노테이션에서 지원해 주는 다양한 속성들을 활용해야 되지만 말.. 2025. 1. 12. 『Spring Boot』 application.yml과 Profile 전 프로젝트에서는 "Profile 별로 모든 설정"을 각각 관리했는데 이번 프로젝트에서는 "공통 설정 + Profile별 설정"을 분리해서 관리한다. 프로젝트마다 환경을 다루는 방법에 차이가 존재하는데 이번 기회에 "공통 설정 + Profile별 설정"에 대해 알아볼 겸 정리하려 해 본다. application.yml과 Profileapplication.yml 혹은 application.properties는 Spring Boot 애플리케이션 구동 시 자동으로 로드되는 구성 파일이다.Key-Value 혹은 yml 포맷을 통해 애플리케이션에서 사용할 설정 값을 정의한다. 설정 값 예시 서버 포트 DB 접속 정보 로그 레벨 설정 외부 API Token 정보 application-{profile}.y.. 2024. 12. 28. 『F-Lab』 신청까지 3년을 고민했다. 마침 크리스마스이고,마침 3년 동안 고민했던 F-Lab 멘토링을 신청했고, 위와 같은 계기로 2024년 한 해를 보내며 겪은 문제와 고민 그리고 결과에 대해 회고하고자 한다. 2024년은 인생에 있어서 가장 동적인 한 해였다.Java / Spring framework 위주의 학습을 해온 나에게 Golang 생태계는 새롭게 다가왔고 1년 동안 레거시 프로젝트를 개선하면서 팀원으로 그리고 인간적으로도 성숙해질 수 있는 시간이었다. "조직에 필요한 일을 우선적으로 해야 된다." 평소 자주 즐겨보는 기술 블로그 저자의 말이다. 나 또한 위 주장에 대해 공감하며 꽤 괜찮은 개발자이자 팀원이 되기 위해서는 조직에 필요한 일을 우선적으로 해야 된다고 판단한다. 그러나 빅테크에서 원하는 기술의 깊은 이해 수준과 내부 .. 2024. 12. 25. 『DataBase』 Oracle SQL & MyBatis Mapper 부먹 복잡한 결재 시스템을 구축한다고 가정하고, Oracle SQL과 MyBatis Mapper를 조합해서 다양한 쿼리들을 구현해 보자.간단한 예제 쿼리로는 복잡한 비즈니스 로직이 녹아있는 실무의 쿼리를 이해할 수 없기에 조금 복잡한 내용들을 다루어 보려고 한다. 우선 쿼리를 작성하려면 테이블이 존재해야 되기 때문에 아래와 같이 4개의 예제 테이블을 정의하겠다. 하나의 사용자는 여러 결재 요청을 생성할 수 있어 둘 사이에는 1대 N(One-to-Many) 관계가 성립한다. 동시에 결재 단계 테이블을 매개로 하나의 결재 요청은 여러 사용자에게 결재를 받을 수 있고, 한 사용자도 여러 결재 요청의 승인자가 될 수 있어 결재 단계와 사용자 사이에는 N대 N(Many-to-Many) 관계가 성립한다. 또한 사용.. 2024. 12. 22. 『Java』 자바에서 Charset 클래스와 UTF-8의 관계는 무엇인가? Charset 클래스란 무엇인가? Java에서 Charset은 텍스트 데이터가 byte 배열과 String 간에 변환될 때 사용되는 문자 인코딩을 정의하는 클래스다. 즉, Java Application이 다양한 언어와 지역의 문자열을 처리하기 위해 특정한 인코딩 방식을 지정하고 이를 통해 바이트와 문자 간 변환을 수행하는 데 핵심적인 역할을 한다. Charset 클래스는 다음과 같은 기능을 제공한다. 등록된 Charset 조회 현재 JVM에서 사용 가능한 Charset들의 목록을 조회할 수 있다. Charset 인스턴스 생성 forName(String charsetName) 메서드를 통해 "UTF-8", "ISO-8859-1"와 같은 표준 명칭을 이용하여 해당 Charset 객체를 얻을 수 있다.. 2024. 12. 10. 『Spring Batch』 스프링 배치 반복 및 오류 제어 Repeat Spring Batch는 얼마나 작업을 반복해야 하는지 알려 줄 수 있는 기능을 제공한다. 특정 조건이 충족될 때까지 Job 또는 Step을 반복하도록 설정할 수 있으며, 스프링 배치에서는 Step의 반복과 Chunk 반복을 RepeatOperation을 사용해서 처리하고 있다. 기본 구현체로는 RepeatTemplate를 제공한다. 반복을 종료할 것인지 여부를 결정하는 세 가지 항목 RepeatStatus스프링 배치의 처리가 끝났는지 판별하기 위한 열거형(enum)CONTINUABLE: 작업이 남아 있음FINISHED: 더 이상의 반복 없음CompletionPolicyRepeatTemplate의 iterate 메소드 안에서 반복을 중단할지 결정한다.실행 횟수 또는 완료 시기, 오류 발생.. 2024. 12. 10. 이전 1 2 3 4 ··· 8 다음