Data Engineer
-
Dockerfile & Docker-composeData Engineer 2024. 2. 20. 14:12
Dockerfile Docker에서 이미지를 생성하기 위한 용도로 작성하는 파일 만들 이미지에 대한 정보를 기술해 둔 템플릿 Docker build [option] [작성한 dockerfile 경로] 위와 같이 명령어를 입력하면 작성한 도커파일의 내용을 기반으로 이미지 빌드 시작 FROM : 베이스 이미지를 지정하는 것 어느 정도 기본적인 구성 요소들이 갖추어진 상태의 이미지를 토대로 만드는 것 From 이미지, 태그 지정 시 registry에서 해당 이미지 pull RUN Command를 실행하여 새 이미지에 포함시키는 역할 컨테이너에 꼭 필요한 소프트웨어, 라이브러리를 포함시켜야 할 때 RUN 뒤에 소프트웨어/라이브러리 설치 명령어 , 파일/디렉토리 생성 명령어 작성 CMD 컨테이너가 시작될 때 실행..
-
[Security] Microsoft DefenderData Engineer 2024. 2. 19. 17:30
우리가 Azure에서 만든 서비스를 안전하게 보관하고자, Microsoft Defender를 도입하기로 하였다. 그와 관련해 공식문서를 찾아본 결과를 공유해보려 한다. Microsoft Defender 다양한 사이버 위협 및 취약성으로부터 클라우드 기반 애플리케이션을 보호하도록 설계된 보안 조치 및 사례로 구성된 CNAPP *CNAPP : Cloud Native Application Protection Platform 다중 클라우드 및 다중 파이프라인 환경에서 코드 수준에서 보안 관리를 통합하는 DevSecOps(개발 보안 작업) 솔루션 위반을 방지하기 위해 수행할 수 있는 작업을 표시하는 CSPM(클라우드 보안 태세 관리) 솔루션 서버, 컨테이너, 스토리지, 데이터베이스 및 기타 워크로드에 대한 특정 ..
-
CBD 방법론Data Engineer 2024. 1. 11. 07:20
재사용성, 대체성 재사용성 : 컴포넌트가 독립적인 기능 혹은 서비스를 제공하는 독립적인 모듈이므로 이를 필요로 하는 여러 애플리케이션에서 반복적으로 재사용되도록 하는 것을 의미 개발하고자 하는 시스템에서 필요로 하는 기능 및 서비스를 제공하는 컴포넌트를 식별하고 이를 정의하는 것이 핵심 기존 개발 방식과는 달리 특정 프레임워크 상에서 실행되는 부품화된 컴포넌트를 바탕으로 이를 조립하여 더 큰 컴포넌트를 만들거나 애플리케이션을 개발하는 새로운 기법 분석 - 설계 - 구현 - 테스트 및 인도 컴포넌트 자체를 생산하거나 테스트 완료된 컴포넌트를 조립하여 사용자 요구에 맞는 소프트웨어를 만드는 방법 1. 복잡한 개발 문제를 적당한 구현 단위로 분해하고, 조립 방식으로 애플리케이션을 개발할 수 있어 개발 생산성을..
-
Git add / commit / push 취소Data Engineer 2023. 12. 15. 09:06
git add 취소 $ git reset HEAD [file] 입력 시 특정 파일만 취소 가능 git commit 취소 $ git reset HEAD^ git push 취소 $ Git reset HEAD^ $ Git reblog or git log -g : 브랜치와 HEAD가 지난 몇 달 동안에 가리켰었던 커밋 $ Git reset HEAD@{number} 또는 git reset [commit id] : 원하는 시점으로 워킹 디렉토리 되돌림 Git commit -m “Write commit messages” : 되돌려진 상태에서 다시 커밋 Git push origin [branch name] -f 또는 git push origin +[branch name] : 원격 저장소에 강제로 push Git cle..
-
정형, 비정형, 반정형Data Engineer 2023. 12. 15. 09:03
정형 데이터 데이터베이스의 정해진 규칙에 맞게 데이터를 들어간 데이터 중에 수치만으로 의미 파악이 쉬운 데이터 정형 데이터는 그 값이 의미를 파악하기 쉽고, 규칙적인 값으로 데이터가 들어갈 경우 정형 데이터라고 한다. id gender 1 1 2 2 3 1 남자가 1, 여자가 2라면, gender 칼럼은 수치만으로 성별을 파악할 수 있으므로 정형 데이터다. 비정형 데이터 정해진 규칙이 없어서 값의 의미를 쉽게 파악하기 힘든 경우로, 텍스트, 음성, 영상과 같은 데이터가 비정형 데이터 범위에 속해있다. 반정형 데이터 HTML과 XML과 같은 포맷을 반정형 데이터의 범위에 넣을 수 있다. 일반적으로 데이터베이스는 아니나 스키마를 가지고 있는 형태를 뜻하며, 데이터베이스의 데이터를 Dump하여 Json이나 X..
-
concurrent.futuresData Engineer 2023. 12. 7. 00:29
현재 수행중인 프로젝트에서 Azure Blob Storage로부터 WAS에 이미지 데이터를 로드해야 하는 데 시간이 너무 오래 걸리는 현상이 발생했다. 로드하는 함수를 직렬 처리를 하는 대신에 병렬로 하면 어떨까하는 의문이 들어서 적용을 해보기로 했다. 그래서 이 참에, python의 병렬 함수 처리를 가능케 하는 모듈에 대해 알아보기로 했다. concurrent.futures 모듈은 비동기적으로 callable을 실행하는 고수준 인터페이스를 제공한다. Python에서 비동기 실행은 Thread 혹은 별도의 Process로 수행된다. 이 때, Thread로 실행되는 ThreadPoolExecutor와 Process로 실행되는 ProcessPoolExecutor가 존재한다. Executor 객체 class..
-
Copy() 메서드Data Engineer 2023. 12. 3. 22:40
기본적으로 얕은 복사를 수행. 얕은 복사는 객체 자체를 복사하지만, 내부 객체(리스트, 딕셔너리)는 참조로 유지 내부 객체까지 새롭게 복사하고 싶은 경우 copy 모듈의 copy.deepcopy() 를 사용해야 한다 복사 작업의 오버헤드 : 많은 양의 데이터를 다루는 경우, copy() 작업이 오버헤드를 초래할 수 있다. 특히 큰 데이터 구조를 자주 복사해야 하는 경우 성능에 영향을 미칠 수 있다. 가비지 컬렉션 및 메모리 사용 : 많은 객체가 생성되면 가비지 컬렉션의 작업이 늘어날 수 있다. 불필요한 객체가 많이 생성되면 메모리 사용량이 증가한다 불변 객체 : 숫자, 문자열과 같은 불변 객체인 경우 copy() 작업은 필요하지 않을 수 있다. 불변 객체는 값을 변경할 수 없기 때문에 일반적으로 복사가 ..
-
동기 작업과 비동기 작업Data Engineer 2023. 12. 3. 22:37
비동기 작업이 필요한 상황은 다음과 같이 다양합니다: 대규모 동시 요청 처리: 실시간 데이터 스트리밍: 웹 소켓 통신: 외부 API 호출: 데이터베이스 작업: 백그라운드 작업: 긴 처리 시간 요청: 이러한 상황에서 비동기 작업을 활용하면 애플리케이션의 성능을 향상시키고 사용자 경험을 개선할 수 있습니다. 동기 작업은 비동기 작업보다 간단하고 직관적인 모델로, 특정 상황에서 여전히 필요하며 유용합니다. 아래는 동기 작업이 필요한 몇 가지 상황입니다. 단순한 작업 처리: 데이터 무결성 유지: 순차적 작업 처리: 단순한 코드 구현: 데이터 무결성 유지: 종료 조건이 필요한 작업: 요약하면, 동기 작업은 간단하고 직관적이며 특히 순차적 작업 처리나 데이터 무결성 유지와 같은 상황에서 필요할 수 있습니다. 하지만..