[AI] AI 시대에서 개발자로 살아남기 - 새로운 문제 해결 기법 AI
2023. 2. 2. 01:13
Artificial Intelligence
ChatGPT의 등장으로 또 한 번 IT에 지각변동이 일어나고 있습니다. 개발자가 쉽게 대체되지는 않겠지만 개인적으로 AI 시대에 뒤처지는 개발자는 대체될 가능성이 높다고 생각합니다. AI 모델을 직접 개발하는 것은 제 목표가 아닙니다. 애플리케이션에 이미 개발된 AI를 활용하거나 AI를 입맛에 맞게 fine tuning 할 수 있는 능력을 키우는 게 제 목표입니다. "AI 시대에서 개발자로 살아남기" 시리즈를 통해 AI 모델을 활용해서 어떻게 애플리케이션을 개발하고 fine tuning을 하는데 필요한 지식을 공유하고자 합니다. 이 시리즈에서는 원리를 학습하고 응용하는 방법을 배우는 전통적인 학습 순서보다는 이 둘을 적절히 번갈아가며 AI를 응용할 수 있는 능력을 키우려고 합니다. 비즈니스 목표와 AI..
[Java] Java 실행원리 Deep Dive
2023. 1. 23. 21:01
Java/Deep Java
HTML 삽입 미리보기할 수 없는 소스 Java Java는 다양한 운영체제에서 동일한 소스코드를 실행할 수 있는 "write once, run anywhere"의 철학을 지닌 프로그래밍 언어입니다. 국내에서 가장 활발히 사용되는 언어이며 제가 현업에서도 주로 사용하는 언어입니다. 이번 포스팅을 통해서 자바가 실행되는 원리에 대해 살펴보겠습니다. 프로그래밍 언어가 특정 운영체제 위에서 실행되기 위해서는 해당 운영체제가 이해할 수 있도록 코드가 작성돼야 합니다. 하지만 자바 개발을 하신 분들은 동일한. java 파일을 맥 OS, 윈도우 또는 Linux에서 실행한 경험이 있으실 겁니다. 정확히는 javac(자바 컴파일러)에 의해 컴파일된 .class 코드가 동일하더라도 해당 코드는 서로 다른 운영체제 위에서 ..
[Career] 2022년 회고 - 성장
2023. 1. 7. 11:30
Career/회고
어느덧 개발자로서 1년이 지났습니다. 1년 동안 제게 있어 가장 중요한 목표는 "성장"이었습니다. 새로운 분야의 새로운 사람들 사이에서 조금이라도 보탬이 되고자 힘차게 달렸던 한 해였습니다. 이번 포스팅은 제가 어떻게 1년을 보냈는지 일기 형식으로 작성해보고자 합니다. 새로운 시작 2022년 1월 1일, 첫 회사인 라인플러스에서 결제 및 정산 플랫폼 개발 업무를 시작했습니다. 회사에서는 약 1달 동안 신입을 위한 온보딩 프로그램을 제공했기에 다양한 회사 시스템에 익숙해지는데 큰 어려움은 없었습니다. 곧 맡게 될 업무에 빠르게 익숙해지도록 온보딩 프로그램과 병행하여 팀에서 정리한 문서를 반복해서 읽고 정리하면서 용어와 비즈니스 흐름을 익혀나갔습니다. 개발 본격적인 개발은 UI 수정 또는 비즈니스 로직에 검..
[Database] DBA급 개발자로 - #0 소개
2022. 12. 18. 13:27
Database/DBA급 개발자로
DBA급 개발자로 시리즈는 데이터베이스를 더 깊게 학습하고 싶은 개발자들을 위한 시리즈입니다. 해당 시리즈는 Youtube의 CMU Database Group 강의를 기반으로 작성됐습니다. 목차 1. Relational Model 2022.08.31 - [Database] - [Database] DBA급 개발자로 - #1 Relational Model Relational model Tuple VS Record 2. Intermediate SQL 2022.08.31 - [Database] - [Database] DBA급 개발자로 - #2 Intermediate SQL Aggregation functions Window functions CTE(Common Table Expressions) 3. Databa..
[Java] Java Thread Deep Dive
2022. 12. 17. 17:35
Java/Deep Java
Java thread는 OS thread에 1:1로 매핑된다는 특성 덕에 다른 언어에서 사용하는 thread에 비해 무겁다는 명성을 가지고 있습니다. OS thread의 크기는 기본적으로 MB 단위이므로 대규모로 thread를 생성해서 사용 시 메모리에 큰 부하를 줄 수 있습니다. 단, 곧 등장할 java의 virtual thread는 OS thread와 N:1 구조로 매핑되는 user level thread이므로 기존의 java thread와 비교하면 훨씬 가볍습니다. 하지만 아직 virtual thread가 프로덕션에서 활용된 사례가 많지 않기 때문에 당분간은 여전히 java thread를 자주 사용할 것이고, 그렇기 때문에 java thread와 OS thread의 관계에 대해 잘 이해해야 합니다...
[Database] DBA급 개발자로 - #23 Distributed Database 3/3
2022. 12. 16. 09:23
Database/DBA급 개발자로
이번 포스팅에서는 분산 환경에서의 OLAP, 쿼리 실행 모델 및 그 외 알아두면 괜찮은 것들에 대해 살펴보겠습니다. OLAP OLAP란 On-Line Analytical Processing의 약자입니다. OLAP는 OLTP처럼 단순한 CRUD 유형의 작업이 목적이라기보다는 분석 등의 복작한 작업을 수행하는 데 사용됩니다. Schema OLAP용 스키마는 fact 테이블과 dimenstion table로 구성됩니다. Fact 테이블은 dimention 테이블의 모든 키와 종합된 데이터를 가지고 있습니다. Dimension 테이블의 경우 fact 테이블의 종합된 데이터를 생성하기 위한 정보를 가지고 있습니다. Star Schema 별 모양을 닮은 스키마를 의미합니다. 다음에 살펴볼 snowflake sche..
[Database] DBA급 개발자로 - #22 Distributed Database 2/3
2022. 12. 10. 09:54
Database/DBA급 개발자로
이전 포스팅에서 분산 데이터베이스에 대해 간략히 살펴봤습니다. 이번 포스팅에서는 분산 트랜잭션 커밋을 어떻게 atomic 하게 처리할지, 복제는 어떻게 하는지 그리고 CAP 이론에 대해 살펴보겠습니다. Atomic Commit Protocol 분산 트랜잭션을 커밋하기 위해서는 모든 노드가 작업을 정상적으로 처리했는지 확인해야 합니다. 분산 환경에서 atomic 한 커밋을 보장하기 위한 프로토콜에는 two phase commit, three phase commit, paxos, raft, ZAP(apache zookeeper)과 viewstamped replication 등이 존재합니다. 이번 포스팅에서는 two phase commit과 paxos에 대해 살펴보겠습니다. Two Phase Commit Tw..
[Database] DBA급 개발자로 - #21 Distributed Database 1/3
2022. 12. 9. 22:38
Database/DBA급 개발자로
이전 포스팅에서 로깅을 활용해서 시스템 장애 시 데이터베이스를 어떻게 복구하는지 살펴봤습니다. 이번 포스팅에서는 분산 데이터베이스에 대해 살펴보겠습니다. Distributed Database 데이터베이스 노드가 네트워크로 연결돼서 데이터베이스 기능을 제공하는 형태를 분산 데이터베이스라고 합니다. 노드 간 통신이 네트워크를 통해 이뤄지므로 통신 비용을 고려해야 합니다. System Architecture 분산 데이터베이스는 다음과 같이 구성할 수 있습니다. 하나씩 살펴보겠습니다. Shared Memory 데이터베이스 노드가 네트워크를 통해 하나의 메모리를 공유하는 형태입니다. 데이터베이스 노드는 하나의 메모리에 적재된 데이터를 공유합니다. Shared Disk 네트워크를 통해 디스크를 공유하는 형태입니다...