전체 글 99

엘리스 리크루팅 위크 (드디어 취뽀)

결국결국결국*100  취뽀하게 되었다. 아직 미생이고 가야할 길이 너무 멀고 길지만 백엔드 개발자를 꿈꾸며 긴 시간동안 했던 준비를 떠올리며 엘리스 트랙에서 주신 도움도 홍보차 포스팅 하고싶어서 글을 써본다.취업한지 3달이나 지났지만 이제 씀 홍보 해드리는거 재대로 포스터까지현재 취업한 기업 및 직무아주 작은 스타트업 취업하게 되었다. 생성형 AI 를 기반으로 한 서비스를 모니터링하고 자연어로 시스템 관리를 지원하는 서비스를 만들고 있다. 포지션은 백엔드 파트이다.물론 매우 작은 회사라 안좋은 점도 있지만 지금은 좋은점이 더 많은것 같다. 스타트업이기 때문에 기술의 선택도 자유로운 편이고 비교적 최신 기술과 새로운 버전등을 현업에서 직접 써볼 수 있는 점이 좋은것 같고 혼자 공부하면서는 느낄 수 었던 하..

카테고리 없음 2024.09.06

엘리스 클라우드 트랙을 마치며

엘리스 Cloud트랙에 들어온 계기엘리스 트랙에 참여하기 전 나는 1년 반동안 혼자 Java Spring을 독학하며 취업 준비를 하던 상황이었다.짧지 않은 기간 취업에 도전했지만 쉽사리 취업의 벽을 넘지 못했고 무엇을 어떻게 공부해야 할지 갈피를 잡지 못하고 의지도 약해진 상태였다. 예전 오프라인 스터디에 SW 트랙을 수료하고 취업한 스터디원이 있었고 엘리스 교육과정을 추천한 적이 있었다. 그 당시에는 내가 공부하던 Java , Spring 과정이 없어 참여하지 못했었다.우연히 SNS를 통해 Java, Spring 클라우드 1기 모집글을 접하여 신청하게 되었고 열심히 달려 수료까지 하게 되었다. Cloud트랙에서 학습 후기 클라우드 트랙을 진행하면서 가장 좋았던 부분은 첫 번째로 학습에 대한 방향성이 생..

카테고리 없음 2024.06.04

sequelize 사용법(1) - 모델(Entity)설정

sequelize 는 node.js의 ORM 라이브러리중 하나로 여러 RDBMS를 지원하고 Promise 기반으로 구현되었기 때문에 비동기 로직을 편리하게 작성할 수 있게 한다.sequelize 설정 (model/index.js)const Sequelize = require('sequelize');const env = process.env.NODE_ENV || 'development';const config = require('../config/config')[env];const db = {};const sequelize = new Sequelize(config.database, config.username, config.password, config);db.User = require('./user')(..

express 2024.05.30

await 와 async

컴파일 언어인 java와 그 프레임워크 spring을 기반으로 공부했던터라 자바스크립트에 대한 이해가 부족했었다. node.js 로 백엔드 예제를 만들다가 만난 경험을 적어본다. 자바스크립트는 싱글 스레드 기반의 인터프리터 언어이다. 때문에 동시성을 갖고 작업을 하기 위해서는 비동기 방식이 쓰이게 된다.  동기동시에 일어난다는 뜻을 가지고 있고 어떤 요청이 들어왔을 때 응답이 한자리에서 동시에 일어난다는 의미한가지 작업을 하면 결과가 반환 될 때까지 다른 작업이 대기한다.비동기어떤 요청이 들어오면 한자리에서 동시에 응답이 일어나지 않는다.여러 요청을 번갈아가며 수행한다. 비동기 처리가 백그라운드에서 동작하면 동시성을 갖는 작업의 결과 중 어떤 작업이 먼저 결과가 반환될지 알수가 없다.때문에 작업 완료된 ..

JavaScript 2024.05.28

React Hook

React를 공부하면서 알게된 기능을 간단하게 정리해본다. 이후 상세하게 파고들어봐야겠다. React가 지원하는 Hook 상태 관리를 위한 useState()value에 해당하는 값을 관리할 수 있고 setter를 호출하여 value의 값을 변한다.이때 value에 객체를 선언하여 전체적으로 변경할 수도 있다. import {useState} from 'react'; const [value , setter] = useState({초기화 값}); 조건부 이벤트핸들러 역할의 useEffect()useEffect는 렌더링 이후에 실행되고, 특정 조건을 만족하면 호출하여 실행하도록 설계한다.import React, { useEffect } from 'react';useEffect(()=>{ if(p..

React 2024.05.23

@FeignClient 요청 및 에러 핸들링

기본 세팅 이전 포스팅 참고https://programmingjun.tistory.com/96 @FeignClient 기본 세팅프로젝트에서 외부 api에 요청을 보내야할 경우들이 있어 FeinClient를 사용해보았다. 이 과정중에 발생한 에러를 해결하며 공부하게된 내용들을 정리해본다. 의존성 관리해당 의존성은 Springboot 3.programmingjun.tistory.com 전역, 부분적으로 request를 핸들링하기 위해서 Configuragion을 활용할 수 있다.예를 들어 전역적인 요청에 header를 세팅한다거나 특정 외부 api를 호출할 때 동일하게 header를 세팅해야 할 경우 전역 RequestInterceptor 설정@Configuration을 통해 전역의 요청을 설정할 수 있다...

Spring 2024.05.22

@FeignClient 기본 세팅

프로젝트에서 외부 api에 요청을 보내야할 경우들이 있어 FeinClient를 사용해보았다. 이 과정중에 발생한 에러를 해결하며 공부하게된 내용들을 정리해본다. 의존성 관리해당 의존성은 Springboot 3.2.4에 해당하는 의존성이다.openfeign 라이브러리는 spring cloud 기반의 라이브러리이다. 때문에 spring cloud 의존성이 필요하며 spring cloud는 spring 과 호환성이 중요함으로 버전관리에 신경써야한다. 아래 공식 문서로 확인 가능하다.https://spring.io/projects/spring-cloudext { set('springCloudVersion', "2023.0.0")}dependencyManagement { imports { m..

Spring 2024.05.21

리액트 LifeCycle API

리액트에는 요소의 라이프사이클에 따라 사용할 수 있도록 LifeCycle API를 제공한다.해당 API를 통해 부모 자식관계의 요소들 사이에서 state와 props를 관리를 수월하게 해 준다. 나는 Spring 백엔드를 근간에 두고 있어 SpringFramwork에 비유하면서 공부하여 보았다.스프링에도 라이프사이클에 의해 관리되도록 하는 어노테이션들이 있다. 리액트도 매우 비슷한 기능을 하는 API들을 만들어 놓은 것으로 이해되었다. SpringBoot에서 라이프사이클에 해당하는 기능들Bean Life Cylce에 해당하는더보기@PostConstruct@PreDestroy Bean의 생명주기와는 관련 있진 않지만 엔티티의 생명주기에 대응하도록 만들어진더보기@PostPersist@PostUpdate@Pr..

React 2024.05.14

Spring 외부설정 2 (Profile 사용 예)

외부 설정 Profile 사용교육 과정 마지막 프로젝트에서 Profile을 적용시키고 실행 시점에 값을 주어 실행시킬만한 좋은 케이스가 생겨서 적용해 보았다. 현재 프로젝트에 프로메테우스 그라파나를 설정하여 애플리케이션에 대한 모니터링을 실행하고 있다.하지만 이 모니터링은 로컬 환경에서 실행시킬 때 불필요하고 배포 서버에서 실행될 때 필요한 상황이다. 따라서 배포 시에 VM옵션에 profile=deploy를 주어 배포 시에만 실행되도록 지정하였다. 모니터링 외부 설정 profile 지정#그라파나 설정---spring: config: activate: on-profile: deploymanagement: info: java: enabled: true os: e..

Spring 2024.05.06

Spring boot 커스텀 메트릭 (프로메테우스/그라파나)

엑츄에이터와 마이크로미터스프링 엑츄에이터를 기반으로 한 많은 모니터링 툴들이 있다. 하지만 이러한 모니터링 툴들은 쌓인 엑츄에이터의 정보를 받아올 때 여러 다른 형식으로 데이터를 받아간다. 스프링은 이러한 환경에서 항상 추상화를 통하여 표준 방식을 개발자에게 제공한다. 이 경우에도 마이크로미터를 통한 추상화를 통하여 여러 다른 형식의 포맷을 표준화하였다.   마이크로미터와 액츄에이터가 제공하는 메트릭에는 매우 다양한 정보들이 있다. 전체적인 애플리케이션의 health 체크 및 시스템에 대한 메트릭은 기본적으로 제공해 준다. 하지만 애플리케이션의 비즈니스 로직에서의 의미 있는 지표를 뽑아내고 싶다면 어떻게 해야 할까?? 사용자 메트릭일 정의하여 수집 설정을 할 수 있다. 카운트 예제 1)- registry..

Spring 2024.05.06