전체 글
-
계속 바뀌었던 제휴사 연동 모듈의 로그 적용기학습/회고록 2024. 11. 23. 11:59
PM: Production에는 로그를 적재하고 있지않아요! p4..쯤 안정화되면 적용할께요!! 예..? Q. staging 에는 로그가 있는데요? 그대로 쓰면 안되나요..?Team: 아... 로그 보안정책을 다 제대로 체크하지 못했어요.. Q. staging 서버는 어떻게 적용이 됐나요..?PM: 데이터독 서버가 해외라 staging은 암호화처리를 하고 production은 적재하지 않는 방식으로 가기로 했어요. 그렇다.데이터독 서버는 2019년 9월에 9조 이상 가치로 미국 나스닥 시장에 상장한 해외서버였다. 여러 제휴사를 붙이고 제휴사마다의 규격을 통일화 한뒤 코드의 모듈자체에 로그 컨벤션을 완성했다.production의 로그는 휘발성으로 남겨둔채로 DB에 적재된 통신로그에러메세지만 보다가 한계가..
-
[회고] 제휴사 연동 서버 개발학습/회고록 2024. 11. 23. 11:21
신규 제휴사 연동이 많아지면서 대출 처리 서버에서 제휴사 연동 모듈서버를 따로 분리하는 작업을 맡게되었다. 개발스펙은 기존 프로젝트는 Go Lang을 사용하고 있었으나, 제휴사 연동 모듈은 Spring Boot + Java 로 개발된다고 하여 투입을 진행했다. MSA 환경답게 쿠알못인 나에게 쿠버네티스를 접할기회가 생겼고 데이터독과 AWS를 다룰 수 있는 기회도 생겼다. 그 밖에도 회사는 스타트업 답게 데이터독 대시보드와 스노우플레이크를 잘 활용하고 메인 언어를 golang 으로 가져가고 있었다. 처음 계약 3개월동안은 대출 도메인을 공부하면서 코드스타일을 맞춰가려고 노력했다.가장 좋은점은 팀원들의 빠른 리뷰문화와(리뷰먼저 처리) 슬랙을 사용한 업무소통이 빠른 업무처리를 만들어내는 조직으로 자리잡고 있다..
-
[프로젝트] 클라우드 로컬에서 실행되도록 만들기학습/프로젝트 2024. 7. 5. 15:51
# 프로젝트 환경쿠버네티스 # 외부 연결된 어플리케이션- 메세지 큐 [ sqs, sns ]- Grpc - 로깅 DataDog / Cloud watch- rds mysql- apn2 redis # TODO프로젝트를 로컬에서 실행되도록 개선 # 외부 연결된 어플리케이션1. 로컬에서 연결이 가능한 외부 어플리케이션 정리- 데이터베이스 (redis, mysql) - Grpc (다른 프로젝트) 2. 로컬에서 대체가능한 어플리케이션 정리- 로깅 -> 로컬에서 쓰도록 설정 추가 3. 대체가 안되는 어플리케이션 정리- AWS의 모든 어플리케이션 # logback에 로컬 로깅 적용# logback-spring.xml # AWS 모킹테스트 코드에서만 정상적으로 작동되도록 aws 설정을 모킹 후 결과값을 반환하도록 작성되..
-
[SAP 시험관리] 프로젝트 DEV 서버 구축일기.학습/프로젝트 2024. 4. 24. 08:36
프로젝트 구축 회고: 팀 작업과 기술 선택의 중요성프로젝트 개요프로젝트는 테스트 응시자 관리 시스템을 개발응시자의 계정 발급, 시험 성적 관리, 시험 문제 관리 등 백오피스 개발팀 구성과 역할퍼블리셔: UI 구현프론트엔드 개발자: React를 사용한 클라이언트 사이드 로직 구현백엔드 개발자 (나): 서버 사이드 로직 및 데이터베이스 관리기술스택프론트엔드: React(프론트엔드)백엔드: Spring Boot 3, MybatisDB: MySQL기술 선택 이유프론트엔드: 팀원 중 React에 능숙한 개발자가 있어 선택.백엔드: 복잡한 도메인 로직 관리가 필요 없어 JPA 대신 MyBatis 선택.JWT 토큰: 시스템 간 통신과 인증에 JWT를 사용하여 보안 강화.기술 스..
-
[JS] Map, Filter, Reduce기초/자바스크립트 2022. 12. 17. 02:53
인프런 강의 정리 함수형 프로그래밍과 Javascript ES6+ *custom Map 함수 /** f : 맵 속성을 위임할 함수 iter : 이터러블을 반환하는 제너레이터 function : 이터러블을 받아 맵을 생성하는 함수 **/ const map = (f, iter) => { let res = []; for (const a of iter) { res.push(f(a)); } return res; }; *원하는 value만 맵으로 생성 console.log(map(p => p.name, products)); console.log(map(p => p.price, products)); /** let names = []; for (const p of products) { names.push(p.name)..
-
[JS] 제너레이터기초/자바스크립트 2022. 12. 17. 00:40
인프런 강의 정리 함수형 프로그래밍과 Javascript ES6+ 일반함수 이름에 *을 붙여 제너레이터 함수를 만든다 제너레이터 함수 : 이터레이터를 만들어준다. 마지막 return 값은 done을 할 때 반환되는 값이다. function *func() { yield 1; if ( false ) yield 2; yield 3; } 제너레이터는 문장을 순회할 수 있는 값으로 만들 수 있다. 제너레이터를 통해 순회할 수 있는 이터러블을 쉽게 만들 수 있다. //제너레이터 코드를 이용한 홀 수 이터러블 만들기 //1씩 무한하게 증가시키는 함수 function* infinity(i = 0) { while (true) yield i++; } //1씩 무한하게 감소시키는 함수 function* infinity2(i..
-
[JS] Symbol.iterator카테고리 없음 2022. 12. 15. 23:31
인프런 강의 정리 함수형 프로그래밍과 Javascript ES6+ 이터러블/이터레이터 프로토콜 - 이터러블: 이터레이터를 리턴하는 [Symbol.iterator]() 를 가진 값 - 이터레이터: { value, done } 객체를 리턴하는 next() 를 가진 값 - 이터러블/이터레이터 프로토콜: 이터러블을 for...of, 전개 연산자 등과 함께 동작하도록한 규약 Collection[Symbol.iterator] - Array[Symbol.iterator] // values() { [native code] } - Set[Symbol.iterator] // values() { [native code] } - Map[Symbol.iterator] // entries() { [native code] } //..
-
[JS] 일급 함수와 고차함수기초/자바스크립트 2022. 12. 14. 19:04
인프런 강의 정리 함수형 프로그래밍과 Javascript ES6+ 일급함수 - 함수를 값으로 다룰 수 있다. - 조합성과 추상화의 도구이다. - 함수가 값으로 다뤄질 수 있다. 고차함수 - 함수를 값으로 다루는 함수 - 함수를 인자로 받아서 실행하는 함수 -일급함수 예제 const inc = x = x + 1; log( inc ); // x = x + 1 log( inc(10) ); // 11 const func1 = () = () => 1; const func2 = func1(); log( func1() ); // () => 1 log( func2 ); // () => 1 log( func2() ); // 1 고차함수 - 함수를 인자로 받아서 실행하는 함수 const apply = func => fun..