개발/기타 개발 이야기
-
[Tidy First - 소프트웨어 설계] 00. Tidy First?개발/기타 개발 이야기 2024. 6. 12. 03:24
데이터야놀자 행사에서 받은 켄트 벡의 Tidy First.오늘부터 조금씩 조금씩 읽으면서 배운 내용을 정리해볼 생각이다.여기서는 들어가는 말을 읽으며 생각한 것들을 몇줄 써본다.'좋은 코드'라는 것은 결국 사람의 주관에 있는 것이다.객관적인 지표는 없다.동료들(혹은 기타 개발자 집단)이 좋은 코드라고 입을 모을 수 있는 코드라면 좋은 코드이다.그들의 마음엔 천 가지의 각기 다른 노하우들이 있다.때문에 실력있는 개발자는 '천 가지의 각기 다른 노하우를 가장 이상적인 모습으로 통합할 수 있는 개발자'이다.그러기 위해서는 '학습'과 '소통'이 모두 균형있게 이루어져야만 한다.그 예를 들자면.. 학습의 측면1. 타인의 노하우(책, 인터넷, Peer Review 등)를 제대로 & 빠르게 내 것으로 만들 수 있어야..
-
Feature Flags (기능 플래그, 기능 토글)개발/기타 개발 이야기 2024. 6. 9. 01:01
최근 업무에서 Feature Flags 혹은 Feature Toggles (이하 기능 토글)라고 불리는 방식을 도입했다.기능 토글은 새로운 코드를 배포하지 않아도 특정 기능을 켜고 끌 수 있는 기술을 말한다. 기능 토글을 쓰면..1. 서버를 유지한 상태로 기능을 키고 끌 수 있다.2. 기존에는 기능 배포를 위해 반드시 코드 변경과 배포가 수반되어야 했다. 이렇게 되면 배포 관련 지식을 가진 개발자가 반드시 개입되어야한다. 그러나 기능 토글은 훨씬 간단하므로 개발자가 아니더라도 쉽게 키고 끌 수 있다.3. 프로덕션 환경에 새로운 기능을 좀 더 부담없이 배포할 수 있다. 문제시 바로 꺼버리면 되니까..4. 기본적으로 On, Off 값을 가지는데, 일부 소수 유저 (랜덤한 10%에게만이라던지) 에게만 새로운 ..
-
자바스크립트 Shallow copy vs Deep copy개발/기타 개발 이야기 2024. 1. 27. 12:00
자바스크립트에서 기존에 존재하는 객체를 복사해서 새로운 무언가를 만들고 싶을 때가 있다. 하지만 그냥 새로운 변수를 선언해서 기존의 객체를 대입하면.. 새로운 변수를 변형했을 때 기존의 값까지 영향을 받아 상황에 따라 골치아파질 수 있다.. 이건 후술할 shallow copy가 된다. Shallow copy는 원본의 값을 '참조'하는 형태로 복사한다. 따라서 복사한 값의 형태가 바뀌면 그 원본의 값도 영향을 받는다. Deep copy는 원본의 값을 정말 그 값만 복사해오고, 원본과는 완전히 별개의 객체가 된다. 이를 수정하거나 해도 원본의 값은 영향을 전혀 받지 않는다. ex) //JavaScript 환경에서.. obj = {a: 1, b: 2}; new_obj = obj; new_obj.a = 3; c..
-
CORS 정책 관련 참고글개발/기타 개발 이야기 2024. 1. 22. 18:09
기본적으로 SOP(Same-Origin-Policy)라는 '같은 출처에서만 리소스를 공유할 수 있다는 정책이 있음. - 여기서의 '출처'는 'Scheme', 'Host', 'Port' 세 가지가 동일하다면 같은 출처로 봄. 더 자세한 내용은 상기 링크 참조 그러나 현실적으로 서로 다른 출처에서 리소스를 공유해야할 필요성이 큼. 때문에 SOP에 예외사항을 둔다. CORS라는 정책을 만족한다면 다른 출처라도 리소스를 공유할 수 있도록 함 다만, 출처를 비교하는 로직이 브라우저측에 있다. 때문에 서버끼리 통신을 할 때는 CORS 정책이 적용되지 않는다. CORS 때문에 에러가 발생했어도 서버 쪽에는 정상 응답 로그가 남기에, 에러를 찾기 어려워질 수 있다. 다른 출처를 가진 리소스 사용 구조 웹 클라이언트 어..
-
카오스 몽키 (Chaos monkey)개발/기타 개발 이야기 2022. 7. 31. 14:11
그 이름부터 흥미로운 '카오스 몽키'는 비디오 대여업을 하던 넷플릭스가 비디오 스트리밍 서비스로 전환하던 초기에 자사 시스템의 탄력성과 회복성을 제고시키기 위해 고안한 소프트웨어 도구이다. 카오스 몽키가 하는 일은 서비스를 공급하는 인스턴스를 무작위로 셧다운시켜버리는 것이다. 이렇게 함으로써 엔지니어는 추후 예상치 못한 장애가 발생했을 때 시스템이 스스로 복구할 수 있게 하는 등의 작업을 미리 할 수 있게 된다. 이는 이후 '카오스 엔지니어링'이라는 방법론으로 발전하여 현대 소프트웨어 개발의 원칙 중 하나로 자리잡게 된다. 참고 : https://github.com/Netflix/chaosmonkey