



일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- address
- 출처: 자바의 신 8장
- PID
- 필사
- 카우치코딩 #couchcoding #6주포트폴리오 #6주협업프로젝트
- 카우치코딩 #couchcoding #6주포트폴리오 #6주협업프로젝트v
- terminate
- khaiii
- 클라이언트사이드렌더링
- gitbash
- 비동기
- 마크다운
- Kakao
- 자바파이썬
- github markdown
- 파이콘
- expression statement is not assignment or call html
- 모바일웹스킨
- 플젝후체크
- Anaconda
- github
- SSR
- Morphological analysis #Corpus
- #스파르타코딩클럽후기 #내일배움캠프후기
- 파이썬
- 코딩온라인
- 서버사이드렌더링
- taskkill
- Machine Learning
- Technical Writing
- Today
- Total
목록전체 글 (132)
개발 일기
이전 편: https://writerroom.tistory.com/379상황 공제 가맹점이라는 테이블 특성 상, Hit 가 적을 수 밖에 없기에 여기서는 성능 개선의 여지가 적다고 판단했다.다시 로직을 보면, 아래 6개의 과정으로 분류할 수 있다. 팀과 논의 후, 슬로워 쿼리 개선 /캐시 적용 등을 이미 해보았으니, DB 부하 감소로는 최적화의 여지가 없다고 판단했다. 현재 로직이 이미 복잡하기에, 작업을 멀티 쓰레드에서 동시에 실행해서 처리 속도를 높여보기로 했다 [로직] 1)올해 국내 결제 내역 조회(Reader) *2-5는 Processor2)결제 건의 가맹점 번호를 기반으로 공제 타입 확인3)이미 연말정산 된 거래인지 중복 확인4)할인,그룹, 거래 타입 분류 등 기타 상세 내역 확인5)정산에 필..

문제 2024년 한 해 동안 발생한 결제 건을 연말 정산 하여, 국세청에 제출한다. 이때 정산 내역을 만드는 배치의 소요 시간이 매우 길었다. 참고로 복잡한 비즈니스 로직을 수행하는 processor 에서 소모한 시간이 대부분이다. Reader/writer는 I/O 작업 위주라서 영향이 거의 없다. Read Time: 20초Process Time: 6시간 10분 Write Time: 4분긴 배치 시간은 1)지속적인 모니터링으로 작업 효율성을 떨어트리며,2) 최악의 상황에서는 다른 배치가 실행되지 못하는 위험이 있다 (현재 여러 배치가 한 EC2 인스턴스에서 실행되기 때문) 로직1)올해 국내 결제 내역 조회(Reader)*2-5는 Processor2)결제 건의 가맹점 번호를 기반으로 공제 타입 확인3)..
10년 뒤 당신은 어떤 엔지니어가 되고 싶나요? 자소서 질문으로 자주 받았던 질문이다. 그런데 요즘은 꼭 10년은 아니어도, 내가 어떤 사람이 되어야 하는가 자주 생각한다. 사실 비즈니스에 있었을 때는 이런 생각을 크게 하지 않았고, 주위에 하는 사람도 별로 없었다. - 모두가 아는 것이라고 할 지라도, 실수할만한 포인트를 항상 인지하고 치명적인 실수를 하지 않는 개발자가 되고 싶다.(ex. gitignore, application.yml의 설정, ddl-auto 같이 실수하면 큰일나는 것들..) - 공식 문서만으로 개발할 수 없더라도, 공식 문서를 자주 들여다보고 싶다 -> 정말 다행인 것은, 이제는 영어로 문서를 읽는 게 꽤 할만하다는 것이다. 코딩을 처음 시작할 때는 사람들이 너는 영어를 잘 하..
팀 코드에는 다른 시스템에(ex. 결제 -> 회원 서비스) 메시지를 전달할 때, 코루틴을 활용한다. 해당 코드를 작업 하면서, 코루틴을 공부한 내용을 정리해두었다. 코루틴을 이해하려면, 먼저 동기와 비동기를 이해해야 한다.동기와 비동기 특성동기 프로그래밍비동기 프로그래밍실행 순서작업이 순차적으로 실행됨 (이전 작업 완료 이후)작업 간 순서가 중요하고, 결과가 즉시 필요할 때.한 작업의 완료를 기다리지 않고, 다음 작업으로 넘어간다. 작업이 완료되면, 코루틴/콜백 등을 통해 처리.블로킹 여부호출된 스레드를 차단함.완료될 때까지 호출된 스레드가 기다려야 함.호출된 스레드를 차단하지 않고 즉시 제어 반환하므로,다른 작업을 그동안 진행함.코드 복잡성비교적 간단하고 직관적복잡하며 관리가 필요응답성작업 중 응답이..

Graceful Shutdown 이란? 스프링 부트의 공식문서에서는 아래와 같이 설명한다. 해석해보면 이런 뜻이다. GracefulShutdown 은 애플리케이션 컨텍스트를 종료하고, 빈을 중단하는 초기 단계에서 일어난다.중단하는 과정에서는 Grace Period 를 제공하는 타임아웃을 사용한다. Grace Period 동안 기존 요청들은 실행을 마칠 수 있지만, 새로운 요청은 허용되지 않는다. It occurs as part of closing the application context and is performed in the earliest phase of stopping SmartLifecycle beans. This stop processing uses a timeout which provid..

팀에서는 파일을 다루는 업무가 많기 때문에, 파일을 읽고, 조회하고, 리눅스 명령어를 다룰 일이 많다. 리눅스는 유닉스 계열 운영체제이다. 쉘은 유닉스 및 리눅스 시스템에서 사용자가 시스템과 상호작용하게 해준다. 쉘을 통해 파일 시스템을 탐색하고, 파일을 열고, 편집하고, 프로그램을 실행할 수 있다. 쉘 이란?쉘은 사용자가 입력한 명령을 해석해 커널에 전달하거나, 커널의 처리 결과를 사용자에게 전달하는 역할을 한다 (쉘 스크립트 프로그래밍 (velog.io)) Shebang 이란?셔뱅(shebang)은 해시 기호와 느낌표(#!)로 이루어진 문자 시퀀스로, 스크립트의 맨 처음에 온다.유닉스 계열 운영 체제에서 셔뱅이 있는 스크립트는 프로그램으로서 실행되며, 프로그램 로더가 스크립트의 첫 줄의 나머지 부분을..

메모리 에러가 발생하자 선배가 Heap Dump 를 분석하는 것을 보았다. 특히 메모리 누수나, Out Of Memory 같은 이슈가 있을 때 깊이 분석해보기 위해 사용한다고 한다. 처음 알게 된 개념을 실습해보고자, 인위적으로 OOM 을 발생시킨 후 힙 덤프를 떠보았다. 순서 1) SpringMVC로 간단한 프로젝트를 만들기 2) Heap Dump 만들어서 읽기3) 가비지 컬렉터를 바꿔보기 4) System.gc() 호출해보기5) StringTableSize 바꿔보기 실습 환경 Java 17 | Spring 3.1.1 먼저 자바 애플리케이션을 실행한다. ./gradlew build 명령어 실행 시, build/libs 에 jar 파일이 생성된다.java -jar demo-0.0.1-SNAPSHOT...

현재 팀에서 다루는 서버의 절반은 TCP 통신 기반이다.자주 쓰이지만 익숙치 않은 개념이어서, TCP 통신과 관련해서 기초 네트워크 개념을 정리해보았다. 실무에서 자주 쓰이는 패킷도 들여다 보고자 한다. IO와 NIO 의 차이 자바 Socket 은 blocking IO 로 동작한다. IO는 스트림(Stream)이라는 단방향 통로를 생성해서 외부 데이터와 통신, 연결 클라이언트 수가 적고 대용량, 순차처리에 적합하다. NIO는 채널(Channel)이라는 양방향 통로를 생성해서 외부 데이터와 통신, 연결 클라이언트 수가 많고 소규모 빠른 대응에 적합하다. IONIO스트림방식 Non-buffer버퍼방식동기방식동기/비동기 모두 지원블로킹 방식블록킹/논블록킹 모두 지원 순수 Java NIO로 TCP Echo 서..