반응형

전체 글 60

파이썬 문자열 조작하기

문자열 바꾸기 >> 'Hello, world!'.replace('world', 'Python') 'Hello, Python!' 문자열 분리하기 >>> 'apple pear grape pineapple orange'.split() ['apple', 'pear', 'grape', 'pineapple', 'orange'] 만약 특정 문자(예: ,)를 기준으로 나누고 싶다면 아래와 같이한다. >>> 'apple, pear, grape, pineapple, orange'.split(', ') ['apple', 'pear', 'grape', 'pineapple', 'orange'] 대소문자 변경 대문자 -> 소문자 >>> 'python'.upper() 'PYTHON' 소문자 -> 대문자 >>> 'PYTHON'.lo..

AWS Lambda Troubleshooting 3: Error handling

Lambda에서 Exception이 발생했을 떈 어떻게 될까 특히 Lambda와 Lambda 간의 통신일 땐(, Lambda 1이 Lambda 2에게로 요청을 보냈다고 했을 때), 만약에 Lambda 2에서 에러가 발생하면, Lambda 1은 Retry를 시도한다. Retry는 최대 두 번까지 일어나고, 결과적으로 총 최대 3번의 Request가 들어가게 된다. 만약 이것이 의도된 Retry가 아니라면 비용적으로 문제가 된다. 왜냐면, Lambda는 요청 건 수 당 비용이 발생하는 과금 정책을 가지고 있고, 때문에 의도하지 않은 요청이 두번/세번 더 들어가면, 비용이 불필요하게 두배/세배 늘어날 수 있으니까. 현업에서는 이런 문제를 해결하기 위해서, Exception 객체를 Lambda 밖으로 나가지 않..

AWS/Lambda 2020.03.08

AWS Lambda Troubleshooting 1: Cold Start, 콜드 스타트

현업에서 AWS Lambda를 사용하면서 경험했던 바에 따르면, Lambda를 사용하는 것에 있어 가장 큰 단점이자 어려움은 Cold start인 것 같다. Lambda의 근간이 되는 기술인 Container라는 개념은 Scaling하는데 있어 혁신적인 기술이라고 여겨진다. 왜냐하면, Scale-out하는 상황에서, AWS EC2와 같이, 가상OS가 새로 생성되는 방식이기 아닌, OS 위에 돌아가는 독립적인 하나의 프로그램을 생성하는 개념이기 때문이다. 다시말해, 우리가 꺼져있는 컴퓨터를 키는 것이 아니라, 켜져있는 컴퓨터에 프로그램을 하나 키는 것이다. 때문에 당연히 훨씬 가볍다. 때문에 Lambda를 쓰게 되면, 가장 낮은 사양으로 셋팅하더라도, 부하가 생기는 순간에, Container가 빨리 빨리 ..

AWS/Lambda 2020.03.05

Clean Architecture - 2. 클린 아키텍쳐의 핵심: Use Case

중요한건 Use case다. 클린아키텍쳐를 한마디로 표현하면, 그건 Use case다. 그럼 그 Use case라는게 뭘까. Use case란 내가 만들고자하는 시스템(혹은 서비스라고 하자)을 사용하는 클라이언트가 그 시스템을 통해 하고자 하는 것을 말한다. 예를 들어, '영화관' 이라는 서비스가 있다고 가정해보자. 영화관에서 손님(클라이언트)는 '영화 예매'를 할 수도 있고, '예매 취소'를 할 수도 있고, '환불', 심지어 '팝콘 사기'를 할 수도 있을 것이다. 이 때, 이런 '영화 예매', '예매 취소', '환불', '팝콘 사기' 등등이, '영화관'이라는 시스템에 사용자가 요청할 수 있는, '영화관'의 Use case이다. 클린 아키텍쳐에서 말하는 좋은 아키텍쳐란, 아키텍쳐(설계도)가 그 시스템이 ..

virtualenv, pipenv 그리고 pyenv

virutualenv와 pipenv는, 둘 다 파이썬 패키지 관리 툴로써, 사실상 기능이 거의 동일하다. (심지어, pipenv는 내부적으로 virtualenv를 사용한다.) 다만, pipenv가 virtualenv보다 조금 더 편리한 기능을 제공한다고 보면 된다. 가상환경을 만들고, 그 가상환경을 활성화(activate)시키는 과정이 virtualenv에 비해, pipenv가 더 간결하다. 그리고, pipenv에서는, 파이썬의 requirements.txt와 같이, 적용한 패키지들을 쉽게 재적용할 수 있도록 만들어주는 문서파일(Pipfile)이 자동으로 만들어져서, 별도로 내가 만드는 노력이 없어도 된다. virtualenv virtualenv를 설치한다. $ pip3 install virtualenv..

파이썬, 파일 읽고 쓰기

파이썬에서 파일을 읽고 쓸 땐, 기본적으로, 내장 함수인 open을 사용한다. 파일 쓰기 파일 쓰기에는 크게 두 가지로 나누어진다. (1) 기존에 있던 내용을 삭제하고 쓰기, (2) 기존에 있던 내용에 이어서 쓰기. 이 둘은 open 함수의 파라미터로 구분할 수 있다. 1. 기존에 있던 내용을 삭제하고 쓰기 파일을 새로 생성해서 쓰거나, 같은 이름의 파일이 있더라도 기존의 내용을 모두 삭제하고 내용을 새로 쓰고 싶다면, 파일명 다음의 파라미터로 "w" 옵션을 입력한다. 그리고 실제로 내용을 입력할 때는 write 함수를 이용한다. file = open("file_name.txt", "w") file.write("hello world") file.close() 파일에 내용을 다 쓴 후에는 close 함수를..

Clean Architecture - 1. 클린 아키텍쳐의 기본 철학 한 줄 요약.

들어가면서 인터넷을 검색해보면, 클린 아키텍쳐에 대한 수 많은 자료들이 있다. 대부분 성실하고, 또 자세하게 기술되어 있지만, (나도 그랬고) 초보자들이 한번에 그 방대한 양의 클린 아키텍쳐를 이해하기는 힘들거란 생각이 든다. 그래서, 클린 아키텍쳐를 몇 번에 나누어서 설명해보고자 하는데, 먼저 가장 기본인, "그래서 그 유명한 클린 아키텍쳐라는게 대체 뭔데? 그걸 하면 뭐가 좋은 건데?"에 대해서 이야기 해보고자 한다. 한 줄 요약 먼저 한 줄로 가장 중요한 클린 아키텍쳐의 목적과 철학에 대해 말하자면, "나의 핵심 비즈니스 로직(코드)와 나머지 툴들에 대한 결합도를 낮추겠다" 라는 것이다. 간단한 예시 예를 들어, '영화 예매를 도와주는 웹서비스'를 만든다고 가정해보자. 해당 웹서비스를 만들기 위해서..

Redis 기본 특성

주요 특성 Key-Value 스토어 컬렉션 지원 List, Set, Sorted Set, Hash 등의 자료 구조를 지원한다. Pub/Sub 지원 Publish/Subscribe 모델을 지원한다. 디스크 저장 (Persistent Layer) 현재 메모리 상태를 디스크로 저장할 수 있는 기능 RDB와 지금까지 실행된 업데이트 관련 명령어의 집합인 AOF 기능이 있다. RDB: 현재 메모리에 있는 내용의 스냅샷을 저장해두는 기능이다. 이렇게 덤프한 내용을 다시 메모리에 올려서 사용할 수는 없다. AOF: Append Only File의 약어로, set/del 등의 업데이트 관련 명령을 받으면 해당 명령어를 그대로 기록해둔다. Redis에서는 가능하면 이 두 개를 모두 사용하는 것이 좋다고 이야기하지만, 디..

Server System/Redis 2020.02.28

파이썬 버전 관리: pyenv, virtualenv, autoenv

pyenv, virtualenv, autoenv 이게 다 뭔데? 프로그래밍을 하다보면, 내가 사용해야하는 언어나 패키지의 여러 버전을 사용해야 될 때가 있다. 예를 들어, 내가 두 개의 프로젝트에 참여하고 있는데, 하나의 프로젝트에서는 Python 2.7을 사용하고 있는데, 다른 프로젝트에서는 Python 3.8을 사용하고 있다면 어떻게 해야할까? 프로그래밍을 할때마다 일일이 Python을 삭제 했다가 버전에 맞는 것을 새로 설치해야할까? 생각만해도 끔찍하다. 스위치를 딸깍 누르는 수준으로 쉽게, 원하는 버전의 언어나 패키지를 썼으면 좋겠다. pyenv, virtualenv, autoenv는 다 그런 목적으로 태어났다. 그러면 세 개의 차이는 뭔데? 위의 예시처럼 Python의 버전을 그때 그때 바꿔주고..

반응형